![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
Перейду сразу к вопросу. Есть Excel-файл с 9 колонками и 1000 строк, т.е. 9000 ячеек. Читаю данные из файла следующим образом: Код:
uses ComObj, ActiveX ... var MyExcel, // экземпляр Excel MyWorkBook, // экземпляр рабочей книги MyWorksheet // экземпляр рабочего листа : OleVariant; ... procedure ReadExcel(ExcelFile: string); var i, j, RowCount, ColCount: Integer; ExcelArr: array of array of Variant; d: TDateTime; begin ... // тут я проверил, установлен ли Excel, открыт ли, отключил реакцию на сообщения и т.п. ... MyWorkBook := MyExcel.Workbooks.Open(ExcelFile); MyWorksheet := MyWorkBook.Worksheets.Item[1]; RowCount := MyWorksheet.UsedRange.Rows.Count; ColCount := MyWorksheet.UsedRange.Columns.Count; SetLength(ExcelArr, RowCount); for j := 0 to RowCount-1 do SetLength(ExcelArr[j], ColCount); d := Now(); for i := 1 to RowCount do for j := 1 to ColCount-1 do ExcelArr[i-1, j-1] := MyWorksheet.Cells.Item[i, j].Value; SaveLog( 'log.log', 'Чтение из Excel = ' + FormatDateTime('hh:mm:ss:zzz', Now()-d), 1, False ); end; Результат: Чтение из Excel и валидация = 00:00:06:805. Это очень долго: 9000 ячеек прочесть за ~7 секунд. Можно ли как-то ускорить данный процесс? Заранее спасибо! |
#2
|
||||
|
||||
![]() Читай целиком, в вариантный массив.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
![]() Это как? Подскажите, пожалуйста
|
#4
|
||||
|
||||
![]() Вот здесь посмотри в моем коде, там передача идет массива в Excel, получение - обратная операция.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |