Теперь, самое время перейти к реализации экспорта наших данных в Microsoft Excel. Подключим в раздел Uses две функции ActiveX и ComObj.
1) В разделе private пропишем две функции:
function Install (AValue:String): boolean; и
function Run(AValue:String; var ADest:Variant):boolean;
2) В разделе var объявляем глобальные переменные:
a, index:Integer;
FExcel,Sheet,Colum:Variant;
3) жмем Ctrl+Shift+C и для первой функции прописываем:
var Z:TCLSID;
begin
Result:=(CLSIDFromProgID(PChar(AValue),Z)=S_OK);
end;
4) a для второй:
begin
try
ADest:=GetActiveOleObject(AValue);
Result:=true;
except Result:=false;
end;
end;
5) Добавляем к настройкам столбцов и кнопок при открытии формы, в событие OnCreate формы создаем следующее условие:
begin
if not Install('Excel.Application') then
Application.MessageBox(PChar('Для корректной работы программы необходимо'+ 'иметь установленное приложение Microsoft Excel'#13#10+'Программа будет закрыта'), 'Ошибка', MB_ICONERROR);
DBGridEh1.Columns.Items[0].Visible:=false; //Столбец ID отображать не будем; DBGridEh1.Columns.Items[1].Width:=100; DBGridEh1.Columns.Items[2].Width:=100; DBGridEh1.Columns.Items[3].Width:=100; DBGridEh1.Columns.Items[4].Width:=100; DBGridEh1.Columns.Items[5].Width:=200; Button2.Visible:=False;
//Кнопки 2,3,4 отображать тоже не будем; Button3.Visible:=False; Button4.Visible:=False;
end;
6) И наконец, создаем обработчик событий на Button5, где записываем:
begin
try
FExcel:=CreateOleObject('Excel.Application');
FExcel.Visible:=false; FExcel.Workbooks.Add(-4167); FExcel.Workbooks[1].WorkSheets[1].Name:='Отчет';
Colum:=FExcel.Workbooks[1].WorkSheets['Отчет'].Columns; Colum.Columns[1].ColumnWidth:=20;
Colum.Columns[2].ColumnWidth:=20;
Colum.Columns[3].ColumnWidth:=20;
Colum.Columns[4].ColumnWidth:=20;
Colum.Columns[5].ColumnWidth:=20;
Sheet:=FExcel.Workbooks[1].WorkSheets['Отчет'];
Sheet.Cells[1,2]:='Персональные данные';
Sheet.Cells[2,1]:='Фамилия';
Sheet.Cells[2,2]:='Имя';
Sheet.Cells[2,3]:='Отчество';
Sheet.Cells[2,4]:='Телефон';
Sheet.Cells[2,5]:='Примечание';
index:=3;
AdoTable1.First;
for a := 0 to DBGrideh1.DataSource.Dataset.RecordCount -1 do
begin
Sheet.Cells[index,1]:=DBGrideh1.DataSource.DataSet.Fields[1].AsString; Sheet.Cells[index,2]:=DBGrideh1.DataSource.DataSet.Fields[2].AsString; Sheet.Cells[index,3]:=DBGrideh1.DataSource.DataSet.Fields[3].AsString; Sheet.Cells[index,4]:=DBGrideh1.DataSource.DataSet.Fields[4].AsString; Sheet.Cells[index,5]:=DBGrideh1.DataSource.DataSet.Fields[5].AsString;
inc(index);
DBGrideh1.DataSource.DataSet.Next;
end;
FExcel.Workbooks[1].SaveAs('C:\Users\Администратор\Documents\RAD Studio\Projects\Телефонный справочник\эксель.xlsx');
finally
if not VarIsEmpty(FExcel) then
begin FExcel.DisplayAlerts:=false;
FExcel.Quit; FExcel:=Unassigned;
end;
end;
end;
Вот собственно и все. Запускаем проект, заполняем нашу таблицу случайными данными, жмем на Экспорт в Excel и вуаля!!! Теперь, если мы перейдем по адресу указанному в FExcel.Workbooks[1].SaveAs ('C:\Users\Администратор\Documents\RAD Studio\Projects\Телефонный справочник\эксель.xlsx'); то будем приятно удивлены, обнаружив там экселевский файлик. Но будет гораздо больше восторга если мы его откроем. Как видим все данные из Access были корректно перенесены и сохранены в файл MS Excel. Удачных экспериментов!!!
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.