|
Долго считывает ячейки из эксель | ☑ | ||
---|---|---|---|---|
0
МешочекЗнаний
22.02.17
✎
13:46
|
День добрый.
Считываю по 1 ячейке в цикле. ExcelПриложение = Новый COMОбъект("Excel.Application"); ExcelФайл = ExcelПриложение.WorkBooks.Open(Объект.РасположениеФайлаАртикула) ExcelЛист = ExcelФайл.Sheets(1); ........ Пока Истина Цикл Ячейка = ExcelЛист.Cells(СчетчикСтрок, 2).Value; - занимает 90% времени ........ Чтение одной ячейки занимает 0,7 сек. Учитывая что ячеек больше 1000 затягивается надолго. Можно как то ускорить выборку? Может не через COM объект выбирать данные. В общем как можно ускорить загрузку. |
|||
1
piter3
22.02.17
✎
13:47
|
Знаешь кто сейчас должен придти в тему?:)
|
|||
2
Fragster
гуру
22.02.17
✎
13:47
|
а гугл что говорит?
|
|||
3
Cyberhawk
22.02.17
✎
13:48
|
Если файл xlsx, то сам бог велел использовать нативное считывание
|
|||
4
Lama12
22.02.17
✎
13:49
|
(0) Это COM. Технология медленная. Используй ODBC ну или ADO.NET.
Еще можно екселевский файл выгрузить в CSV и работать с ним как с текстом. |
|||
5
Lama12
22.02.17
✎
13:49
|
Ну или (3)
|
|||
6
Cyberhawk
22.02.17
✎
13:50
|
+(3) "нативное" = "native xlsx" http://catalog.mista.ru/public/300092/
|
|||
7
1dvd
22.02.17
✎
13:50
|
(3) +1
Там только при условии, что лист один |
|||
8
Fragster
гуру
22.02.17
✎
13:50
|
через Range.value получаем ком-массив, из него получаем массив массивов и работаем с ним
|
|||
9
МешочекЗнаний
22.02.17
✎
13:50
|
(3) (4) Можно пример?
|
|||
10
piter3
22.02.17
✎
13:50
|
Скопируй в 1с через табл.документ и наслаждайся
|
|||
11
МешочекЗнаний
22.02.17
✎
13:51
|
(8) Заранее неизвестно сколько нужно строк. Может 5, может 5000
|
|||
12
NorthWind
22.02.17
✎
13:51
|
ADO
|
|||
13
Lama12
22.02.17
✎
13:51
|
(9) Смотри в (6) там куча примеров разных.
|
|||
14
Cyberhawk
22.02.17
✎
13:52
|
(7) Нет, Я считывают с любого листа любые ячейки
|
|||
15
Fragster
гуру
22.02.17
✎
13:52
|
(11) range, он разный бывает... например .usedRange - тоже range
|
|||
16
МешочекЗнаний
22.02.17
✎
13:53
|
(10) Артикулы в экселе идут с маской типа ххх-хххххх-хх. При копировании в таб док лишние символы получаются типа ххх-хххххх-6?8
|
|||
17
МешочекЗнаний
22.02.17
✎
13:54
|
Всем спасибо за советы, буду смотреть.
|
|||
18
Vanilla26
22.02.17
✎
14:08
|
(16) Это когда ТабДок.Прочитать(твойексель.xls) лишние символы?
|
|||
19
Злопчинский
22.02.17
✎
14:22
|
(11) скопируй ВСЕ СТРОКи
|
|||
20
Torquader
23.02.17
✎
00:35
|
Если хочется читать быстрее, то формируешь Range, который хочешь прочитать, и читаешь через Value - на выходе SafeArray двумерный с данными ячеек - через границы процесса едет один раз - скорость вас поразит.
|
|||
21
Fram
23.02.17
✎
01:36
|
(20) а писАть также можно?
|
|||
22
Torquader
23.02.17
✎
02:10
|
(21) А почему нет ? Только сначала создать массив, а потом засунуть. По крайней мере, VbScript так работает, но там массив изначально встроен: ReDim a(2,4)
|
|||
23
МешочекЗнаний
09.03.17
✎
11:00
|
(20) Можно поподробнее как это сделать?
Попробовал считать ExcelЛист.Range("A1:T40").Value. На выходе просто значения всех ячеек без привязки к их местоположению (нет ни номера строки, ни колонки). И ещё как считать весь лист без указания диапазона? |
|||
24
Когнитивный Диссонанс
09.03.17
✎
11:32
|
Быстро загрузить можно так
|
|||
25
МешочекЗнаний
09.03.17
✎
11:56
|
(24) Действительно очень быстро. Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |