Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Конвертируем таблицу в Excel c использованием TExcelApplication

Delphi , Технологии , OLE Automation MSOffice

Конвертируем таблицу в 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;
    end
end;

Программный код на Delphi, который конвертирует таблицу из базы данных (dbGrid) в файл Excel с помощью TExcelApplication.

Обзор кода:

  1. Переменная TabGrid создается как массив варианта с размером (R-1) x (C-1), где R и C - количество строк и столбцов таблицы соответственно.
  2. В цикле каждый элемент грида пополняется данными из соответствующего столбца базы данных. Функция FieldToVariant используется для конвертации типа поля в OLEVariant, который может быть записан в Excel.
  3. Функция FieldToVariant принимает объект TField в качестве входного параметра и возвращает его значение, преобразованное в OLEVariant.
  4. Функция использует оператор switch для определения типа поля и конвертации его значения соответственно:

  5. Для строковых типов - добавляет кавычки вокруг значения.

  6. Для целых типов - конвертирует значение напрямую.
  7. Для вещественных типов - также конвертирует значение напрямую.
  8. Для булевых значений - использует свойство AsBoolean для преобразования значения.

Код работает как ожидается. Однако, если вы хотите более эффективное решение, можно использовать встроенные функции автоматизации Excel Delphi вместо ручного преобразования каждого типа поля. Можно создать объект приложения Excel и новый файл workbook и worksheet для записи данных.

Пример:

var
  excelApp: TExcelApplication;
  excelWorkBook: TWorkbook;
  excelWorkSheet: TWorksheet;

begin
   // Создаем новое приложение Excel
  excelApp := CreateOLEObject('Excel.Application') as TExcelApplication;

   // Создаем новый файл workbook и worksheet
  excelWorkBook := excelApp.Workbooks.Add();
  excelWorkSheet := excelWorkBook.ActiveSheet;

   // Записываем данные в worksheet
  for I := 0 to R-1 do
    for J := 0 to C-1 do
      excelWorkSheet.Cells[I+1, J+1] := FieldToVariant(dbGrid.Columns.Items[J].Field);

   // Сохраняем и закрываем файл workbook
  excelWorkBook.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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE Automation MSOffice ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-17 21:18:25/0.003680944442749/0