Содержание
Как из 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;
//закрываем приложение 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.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.