Форма входа

Категории раздела

Мои статьи [15]

Поиск

Наш опрос

Оцените мой сайт
Всего ответов: 62

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0




Понедельник, 25.11.2024, 04:43
Приветствую Вас Гость | RSS

Delphiport.ucoz.com

Главная | Регистрация | Вход
Каталог статей


Главная » Статьи » Мои статьи

Экспорт данных в Excel из БД ADO Access 2 часть.
    Теперь, самое время перейти к реализации экспорта наших данных в 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.

Удачных экспериментов!!!




Категория: Мои статьи | Добавил: Sashok (04.03.2012)
Просмотров: 3299 | Комментарии: 2 | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright MyCorp © 2024