delphi вывод в excel

В общем есть некий запрос ADOQuery1 Которые выводит в DbGrid1 следующие столбцы из БД:
Код заказа
Наименование
Количество
Примечание

Мне нужно сделать так, чтобы при нажатии на кнопку Button1 результат этого запроса выводился в Ecxel при этом каждый раз в новый файл.
Как мне это сделать? Желательно какой-нибудь пример кода с моими данными. .
Вот мой код запроса:

var
Form7: TForm7;
kod_z: integer;
implementation

uses Unit4, Unit6, Unit5;

<$R *.dfm>
//Это процедура нажатия кнопки для формирования запроса
procedure TForm7.Button1Click(Sender: TObject);
begin
//Это из файла в котором лежит номер заказа подгружается в memo1 на другой форме
Form5.Memo1.Lines.LoadFromFile(‘zakaz.asd’);
//Этот код заказа присваивается переменной
kod_z:=StrToInt(Form5.Memo1.Lines[0]);
//DbGr >with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add(‘SELECT zakaz.[Код заказа] , zakaz.Наименование, zakaz.Количество, zakaz.Примечание FROM zakaz’);
//Это условие которое обеспечивает вывод именно тех записей, которые имеют код заказа равный моей переменной
SQL.Add(‘WHERE zakaz.[Код заказа] = «‘+IntToStr(kod_z)+'»‘);
Open;
end;
ADOQuery1.Active:=true;
end;

COM – Component Object Model – модель многокомпонентных объектов – одна из базовых технологий Windows. Цель ее – обеспечение возможности экспорта объектов. Идея экспорта объектов заключается в том, что один модуль создает объект, а другой его использует посредством обращения к методам или сервисам.
В общем случае программа должна выполнять следующие действия:
1. Проверить, запущена ли копия приложения
2. В зависимости от результатов, запустить приложение или подключиться к запущенному.
3. Если нужно, сделать окно приложения видимым.
4. Выполнить какие-то действия с приложением.
5. Закрыть приложение, если мы его открыли, или отключиться, если подключились.

1.В uses включить модули ComObj и ActiveX
2.Объявим переменные.
var
Form1: TForm1;
WApp, XLApp, Sheet, Colum : Variant;
ExIsRunning :boolean;
AppExId : string;
Unknown : IUnknown;

Вход
procedure TForm1.ToExcelButtonClick(Sender: TObject);
var
Result : HResult;

begin
AppEx ;
ExIsRunning := False;
Result:= GetActiveObject(ProgIdToClassId(AppExId),nil,Unknown);
if Result = MK_E_UNAVAILABLE then
XLApp := CreateOleObject(AppExId) // Создаем
else begin // Подсоединяемся
XLApp := GetActiveOleObject(AppExId);
ExIsRunning := True;
end;
XLApp.Visible := True;

procedure TForm1.OutExcelButtonClick(Sender: TObject);
begin
if not ExIsRunning then XLApp.Quit;
XLApp := UnAssigned;
end;

Создание рабочих книг
procedure TForm1.NewExcelDocButtonClick(Sender: TObject);
var
Index : integer;
begin
XLApp.WorkBooks.Add;
//XLApp.WorkBooks.Add(‘C:Program FilesMicrosoft OfficeTemplates1049Авансовый отчет. xlt’); // Из шаблона
//XLApp.WorkBooks.Add(xlWBATWorksheet); // Рабочая книга состоит из листа с данными
//XLApp.WorkBooks.Add(xlWBATChart); // Рабочая книга состоит из листа с диаграммой

и открытие
procedure TForm1.OpenExcelDocButtonClick(Sender: TObject);
begin
XLApp.Workbooks.Open(‘D:30 GbЛист1.xls’);
end;

Св-во ActiveWorkBook объекта Excel.Application указывает на активную рабочую книгу среди открытых. Кроме этого к рабочей книге можно обращаться по ее порядковому номеру. XLApp.WorkBooks[1]
Сделать книгу активной можно так: XLApp.WorkBooks[1].Activate;

Сохранение, печать и закрытие рабочих книг
XLApp.WorkBooks[1].Close;
XLApp. ActiveWorkBook.Close(True,’C:a1.xls’); Нужно ли сохранять и куда
XLApp. ActiveWorkBook.Save
XLApp. ActiveWorkBook.SaveAs(’C:a1.xls’);

XLApp.DisplayAlerts:= False; Подавление вывода диагностических сообщений

Обращение к листам и ячейкам
Обращение к листам производится с помощью коллекции WorkSheets объекта WorkBook.
WorkSheets[1]
XLApp. ActiveWorkBook WorkSheets[‘Sheet1’].Name := ‘Страница 1’;

Связь с администрацией сайта:

Среди толпы я одинок

  • Вы здесь:
  • Home >
  • Блог >
  • Программирование >
  • Статьи >
  • Delphi 7 Вывод данных в MS Excel

Delphi 7 Вывод данных в MS Excel

  • Written by Administrator
  • Tagged under Delphi 7MS ExcelВывод отчетов в Excel из Delphi
  • Print

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

Заметим, что TF_MAin – это мой идентификатор формы. У вас этот параметр будет отличаться. Его можно посмотреть в «interface»->«type» первой строкой TF_MAin = class(TForm).

Видимо любители экономить килобайты оперативной памяти могут меня закидать помидорами или ещё чем по-хуже, но все-таки я скажу, что интеграция приложений (мегабайты оперативы) — это большой плюс нынешней разработки приложений.
Как ни крути, а время DOS и килобайтов оперативной памяти прошло. Вряд ли кто-то всерьез сейчас задумывается над тем куда это с винчестера пропал мегабайт? Да и использование в своих приложениях функциональности программ, которых ты не писал, но которые выполняют что-то лучше — это всё-таки больший прогресс, нежели корпеть год-два над программой, а потом узнать, что время-то прошло.

План статьи:

Итак, цель сегодняшней статьи — поделиться с Вами опытом работы с Microsoft Excel в приложениях, написанных на Delphi.
Вспомнился сейчас один случай. Когда я только начинал работать по своей специальности, пригласили меня написать программу-расчётник для экологов нашего нефтезавода. В принципе ничего серьёзного — программа считает выброс от нагревательной печи и выдает табличку результатов, которую необходимо распечатать и уложить в толстую папку с отчётами. Естественно, что в области разработки подобных приложения я далеко не пионер, поэтому дали взглянуть на аналог будущей программы, который работал ещё под DOS и печатались отчёты на дико скрипящем матричном принтере с 12-ю иголками. Ну посмотрел, элементарная таблица, расчёт немного запутан, но жить можно — начал по-тихоньку писать. И попалась мне тогда на глаза статейка про работу с Excel в Delphi. Вот я и решил попробовать выдавать отчёт не только на форму приложения, а ещё и скидывать весь ход расчёта с формулами и прочим делом в Excel…Надо сказать более сильно детской радости начальника отдела я не видел до сих пор :). Люди, всю жизнь проработавшие в DOS увидели как тот же самый расчёт может выглядеть в современных условиях. Вот теперь при определении технических заданий на каждую новую программу, обязательно присутствует пункт, гласящий, что программа должна передавать данные либо в MS Word либо в MS Excel.Соответственно и цена на разработку возрастает, иногда значительно.

Отсюда можно сделать простой и однозначный вывод — заказчики готовы пожертвовать лишними деньгами только для того, чтобы всё в программе было красиво. Excel может дать вашему приложению ту самую красоту и удобство.

Ну, а для того, чтобы каждый раз не утруждать себя выполнением однотипных операций, я разработал небольшой модуль для работы с Excel. Этот же модуль я в настоящее время дорабатываю под ещё одну задачу, но об этом после. Сегодня основы основ работы с Excel в Delphi.

1. Как проверить установлен ли Excel на компьютере пользователя?

Создаем новый модуль (unit) и подключаем в uses следующие модули:

Оцените статью