Меню Закрыть

Экспорт dbgrid в excel delphi

Содержание

Как из DBGrid перенести данные в существующий Excel файл

  • размер шрифта уменьшить размер шрифта увеличить размер шрифта
  • Печать

Как из DBGrid перенести данные в существующий Excel файл

Вы здесь

В прошлой статье (Читаем файл Excel (xls) в Delphi) был рассмотрен способ чтения данных из xls файла и его импорт в Delphi. Теперь перейдем к сохранению, т.е. к экспорту данных из Delphi. Экспорт, как и импорт, будет осуществляться через посредника, т.е. Excel. Поэтому для работы приложения потребуется установленная копия MS Excel 2003-2010 (выше не тестировал).

Добавьте на форму кнопку, диалог сохранения, и таблицу StringGrid. Для того чтоб появилась возможность редактирования таблицы StringGrid необходимо в ее свойствах включить опцию goEditing:

Визуальные приготовления для нашего примера готовы. Переходим к написанию кода.

Как и в случае чтения xls нам понадобится библиотека ComObj. Добавьте ее в uses. Ниже приведен листинг процедуры экспорта, добавьте его после ключевого слова implementation.

procedure Xls_Save(XLSFile:string; Grid:TStringGrid);
const
xlExcel9795 = $0000002B;
xlExcel8 = 56;
var
ExlApp, Sheet: OLEVariant;
i, j, r, c:integer;

begin
//создаем объект Excel
ExlApp := CreateOleObject(‘Excel.Application’);

//делаем окно Excel невидимым
ExlApp.Visible := false;

//создаем книгу для экспорта
ExlApp.Workbooks.Add;

//создаем объект Sheet(страница) и указываем номер листа (1)
//в книге, в который будем осуществлять экспорт
Sheet := ExlApp.Workbooks[1].WorkSheets[1];

//задаем имя листу
Sheet.name:=’Данные_из_Delphi’;

//считываем кол-во столбцов и строк в StringGrid
r:=Grid.RowCount;
c:=Grid.ColCount;

//считываем значение из каждой ячейки и отправляем в таблицу Excel
for j:= 1 to r do
for i:= 1 to c do
sheet.cells[j,i]:=Grid.Cells[i-1,j-1];

//отключаем все предупреждения Excel
ExlApp.DisplayAlerts := False;

//обработка исключения при сохраннении файла
try
//формат xls 97-2003 если установлен 2003 Excel
ExlApp.Workbooks[1].saveas(XLSFile, xlExcel9795);
showmessage(‘Файл сохранил 2003-ий офис’);
except
//формат xls 97-2003 если установлен 2007-2010 Excel
ExlApp.Workbooks[1].saveas(XLSFile, xlExcel8);
showmessage(‘Файл сохранил 2007 или 2010-ый офис’);
end;

Читайте также:  Cold of duty black ops 4

//закрываем приложение Excel
ExlApp.Quit;

//очищаем выделенную память
ExlApp := Unassigned;
Sheet := Unassigned;

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

Статья Экспортировать TDBGrid в Excel без использования OLE раздела Технологии OLE Automation MSOffice может быть полезна для разработчиков на Delphi и FreePascal.

Комментарии и вопросы

:: 2011-09-09 07:38:11 :: re:Экспортировать TDBGrid в Excel без использования OLE

Что вот это такое — "ADOX_TLB"? У меня оно подчеркивается..
Это что за классы:
_Catalog;
_Table;
_Column; ?
Они у меня тоже не работают.

Пишу в Delphi2010

:: 2011-10-12 21:20:29 :: re:Экспортировать TDBGrid в Excel без использования OLE

Если внимательно прочитать первый комментарий, то вы увидите:
Прежде всего необходимо импортировать библиотеку типов ADOX, которая будет использоваться, чтобы создать файл Excel и ее внутренней структуры: в среде Delphi.

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

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.