Конвертируем таблицу в Excel c использованием TExcelApplication
// Переписываем
TabGrid := VarArrayCreate([0,(R - 1),0,(C - 1)],VarVariant);
...
TabGrid[I,J] := FieldToVariant(dbGrid.Columns.Items[J].Field);
// И пишем функцию:function FieldToVariant(Field:TField):OLEVariant;
begin
Result := '';
case Field.DataType of
ftString, ftFixedChar, ftWideString, ftMemo,
ftFmtMemo: Result := '''' + Field.AsString;
ftSmallint, ftInteger, ftWord, ftLargeint, ftAutoInc:
Result := Field.AsInteger;
ftFloat, ftCurrency, ftBCD: Result := Field.AsFloat;
ftBoolean: Result := Field.AsBoolean;
ftDate, ftTime, ftDateTime: Result := Field.AsDateTime;
endend;
Программный код на Delphi, который конвертирует таблицу из базы данных (dbGrid) в файл Excel с помощью TExcelApplication.
Обзор кода:
Переменная TabGrid создается как массив варианта с размером (R-1) x (C-1), где R и C - количество строк и столбцов таблицы соответственно.
В цикле каждый элемент грида пополняется данными из соответствующего столбца базы данных. Функция FieldToVariant используется для конвертации типа поля в OLEVariant, который может быть записан в Excel.
Функция FieldToVariant принимает объект TField в качестве входного параметра и возвращает его значение, преобразованное в OLEVariant.
Функция использует оператор switch для определения типа поля и конвертации его значения соответственно:
Для строковых типов - добавляет кавычки вокруг значения.
Для целых типов - конвертирует значение напрямую.
Для вещественных типов - также конвертирует значение напрямую.
Для булевых значений - использует свойство AsBoolean для преобразования значения.
Код работает как ожидается. Однако, если вы хотите более эффективное решение, можно использовать встроенные функции автоматизации Excel Delphi вместо ручного преобразования каждого типа поля. Можно создать объект приложения Excel и новый файл workbook и worksheet для записи данных.
Пример:
varexcelApp:TExcelApplication;excelWorkBook:TWorkbook;excelWorkSheet:TWorksheet;begin// Создаем новое приложение ExcelexcelApp:=CreateOLEObject('Excel.Application')asTExcelApplication;// Создаем новый файл workbook и worksheetexcelWorkBook:=excelApp.Workbooks.Add();excelWorkSheet:=excelWorkBook.ActiveSheet;// Записываем данные в worksheetforI:=0toR-1doforJ:=0toC-1doexcelWorkSheet.Cells[I+1,J+1]:=FieldToVariant(dbGrid.Columns.Items[J].Field);// Сохраняем и закрываем файл workbookexcelWorkBook.SaveAs('output.xlsx');excelApp.Quit();end;
Код создает новое приложение Excel, добавляет новый файл workbook и worksheet к нему, записывает данные в worksheet с помощью свойства Cells, сохраняет файл workbook как 'output.xlsx', а затем закрывает приложение Excel.
Конвертируем таблицу в Excel с помощью TExcelApplication, используя VarArrayCreate и функцию FieldToVariant для преобразования данных из базы данных в формат OLEVariant.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.