Быстрое чтение данных из Excel

Часто необходимо читать данные из файла xls используя объекты самого Excel. Стандартный подход чтения данных из ячеек листа Excel при чтении большого объема данных отрабатывает очень медленно подробнее о чтении файлов Excel было написано в статье http://fk-uran.com.ua/kak-rabotat-iz-delphi-s-fajlami-excel/ .

Для того что бы ускорить процесс загрузки необходимо провести связывание ячеек листа клиентской области с массивом типа Variant. После чего можно будет читать данные листа, используя массив типа Varian, что существенно ускоряет процесс чтения данных.

Также полезным может быть то что возможно заранее узнать размеры клиентской области если данные заполнены в таблицу. Т.е. если на листе расположена таблица с данными 5 столбцов с 12-тью строками между, которыми нет пустых строк. То можно заранее получить эти цифры и организовать цикл перебора этих данных.
Ниже приведен пример кода чтения данных с листа Excel.

function ReadFromExcel(ASheet: Variant; ): Boolean;
var
  i, lRowIndex, lColumnIndex, lRows: Integer;
  lStr: string;
  FData: OLEVariant;
BEGIN
    {ASheet лист книги Excel с которого надо будет считывать данные}
    {Связываем массив типа VARIANT  с ячейками листа}
  FData:= ASheet.UsedRange.Value;
    {Получаем количество срок в клиентской области}
  lRows:= ASheet.UsedRange.Rows.Count;
    {Получаем количество столбцов в клиентской области}
  lCols:= ASheet.UsedRange.Columns.Count;
  for lRowIndex:= 0 to lRows - 1 do
    for lColumnIndex:= 0 to lCols  - 1 do
                lStr = FData[lRowIndex, lColumnIndex];
end;
Share

Tags: ,

Leave a Reply