Имя: Пароль:
1C
1С v8
загрузка экселя
,
0 novichok20
 
18.11.14
15:57
помогите советом и примером пожалуйста(очень нужно).загружаю эксель в табличное поле.файл очень большой и долго выгружаеться .в нем много колонок и строчек которые не нужны.как их убрать подскажите пожалуйста
1 Wobland
 
18.11.14
16:03
предлагаю читать только нужное
2 Wobland
 
18.11.14
16:04
(1) конечно, если речь идёт о чтении, а не о записи
3 manyak
 
18.11.14
16:04
4 manyak
 
18.11.14
16:07
до начала загрузки файла:
отключай обновление экрана и пересчет формул в excel:

excell.Calculation = -4135
excell.screenupdating = false


после окончания включи обратно:

excell.screenupdating = true
excell.Calculation = -4105

значительно ускорит процесс
5 sapphire
 
18.11.14
16:13
(0)
1)файл очень большой и долго выгружаеться
2) в нем много колонок и строчек которые не нужны.как их убрать подскажите пожалуйста

1. Сначала загрузить весь используемый (или необходимый) диапазон в массив через COMSafeArray.

2. Должно быть понимание КАК определить нужность.
6 manyak
 
18.11.14
16:14
и скажи конкретно "большой": это сколько строк и сколько столбцов?
7 novichok20
 
18.11.14
16:19
20 столбцов и 70000 строк (
8 sapphire
 
18.11.14
16:19
(7) Фигня
9 manyak
 
18.11.14
16:21
сделай (4) и приятно удивись :)
10 Fram
 
18.11.14
16:21
(7) перекинь в текст с разделителями. чтение файла ускорится в разы
11 manyak
 
18.11.14
16:28
ну и до кучи если логикой можно отсечь не нужные для загрузки данные, то грузи через ADODB - там прям запрос можно сваять к листу экселя - получишь тока нужные для загрузки данные.
на форуме тьма примеров, поиск по "excel adodb"
12 novichok20
 
18.11.14
16:35
я извиняюсь за свою наглость но можно специально для тугодумов пример?
13 manyak
 
18.11.14
16:38
ну раз тугодум, то пример конкретно чего тебе надо?
14 manyak
 
18.11.14
16:42
вариант из (4) тупо вставляешь в свой код:
до

excell.Calculation = -4135;
excell.screenupdating = false;


после

excell.screenupdating = true;
excell.Calculation = -4105;

где excel - меняешь на имя переменной в которой у тебя обьект эксель
15 novichok20
 
18.11.14
16:44
я имел ввиду пример в котором наглядно видно как отсеить не нужные строки и колонки
16 Бледно Золотистый
 
18.11.14
16:46
А долго загружается - это сколько по времени?
17 manyak
 
18.11.14
16:50
(15) ты прикалываешься?
открой для себя условный оператор ЕСЛИ
в твоем коде проверяй по нужному тебе условию и тока потом забивай в табличное поле

пример:
если значение_ячейки="баба" тогда;
       код_загрузки_в_ТП
конецесли;
если хочешь запросом отфильтровать весь лист то ответ в (11)
18 novichok20
 
18.11.14
16:54
(16)30мин.у меня болше вопрос состоит в том что там много не нужной информации.это выгрузка остатков из хрен знает какой проги.в которой кучу не нужных столбцов и строк.а меня интересует только пару столбцов и строки по 62 счету.я могу сам открыть и удалить (руками)то что не нужно.но нужна обработка,которая будет брать выгрузки из хрен знает какой проги  и выбирать только те поля которые нужны для загрузки остатков.
19 manyak
 
18.11.14
16:57
(18) оператор ЕСЛИ как раз тебя спасет :)
если номер_строки<=62 тогда ....
если номер_столбца=номер_нужного1 или номер_столбца=номер_нужного2 тогда ...
20 manyak
 
18.11.14
16:58
ну а так сделай (14) в разы скорость повысится
21 Бледно Золотистый
 
18.11.14
17:02
(18) Читай через ADODB сразу запросом по нужным колонкам.
22 18_plus
 
18.11.14
17:03
читать через comsafearray, ещё в (5) подсказали.
построчно/поколоночное чтение заведомо тормознее, про проверено на файлах 25 колонок х 300 000 строк.
ещё чтоб быстрее открывалось использовать не xlsx, а xlsb.