Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как из DBGrid экспортировать в Word и Excel? 
V
    Опции темы
Данкинг
Дата 7.6.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Вот тоже пример из готовой программы, который я тоже не адаптировал. smile 
Код

procedure TForm1.otchet_kl;
var ddd:tdatetime;npp,row,npp1,row1:integer;
new:string;
brak:boolean;
begin
npp:=1;
row:=2;
npp1:=1;
row1:=2;
brak:=false;
ex:=createoleobject('excel.application');
ex.visible:=false;
Ex.DisplayAlerts:=False;
ex.workbooks.add;
try
Ex.ActiveSheet.PageSetup.Orientation := xlLandscape;
Ex.ActiveSheet.PageSetup.topmargin:=0;
Ex.ActiveSheet.PageSetup.bottommargin:=0;
Ex.ActiveSheet.PageSetup.leftmargin:=0;
Ex.ActiveSheet.PageSetup.rightmargin:=0;
except
end;
ex.activeworkbook.activesheet.Rows[1].Font.Bold := True;
ex.activeworkbook.activesheet.cells.item[1,1].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,2].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,3].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,4].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,5].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,6].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,7].NumberFormat:='@';
ex.activeworkbook.activesheet.cells.item[1,1]:='№';
ex.activeworkbook.activesheet.cells.item[1,2]:='Дата оформления';
ex.activeworkbook.activesheet.cells.item[1,3]:='Тип операции';
ex.activeworkbook.activesheet.cells.item[1,4]:='Номер выданной карты';
ex.activeworkbook.activesheet.cells.item[1,5]:='ФИО получателя';
ex.activeworkbook.activesheet.cells.item[1,6]:='№ магазина';
ex.activeworkbook.activesheet.cells.item[1,7]:='Дата выдачи';
ex.activeworkbook.activesheet.cells.item[1,8]:='Выдача карты';
ex.activeworkbook.activesheet.cells.item[1,1].ColumnWidth := 5;
ex.activeworkbook.activesheet.cells.item[1,2].ColumnWidth := 20;
ex.activeworkbook.activesheet.cells.item[1,3].ColumnWidth := 20;
ex.activeworkbook.activesheet.cells.item[1,4].ColumnWidth := 20;
ex.activeworkbook.activesheet.cells.item[1,5].ColumnWidth := 25;
ex.activeworkbook.activesheet.cells.item[1,6].ColumnWidth := 9;
ex.activeworkbook.activesheet.cells.item[1,7].ColumnWidth := 20;

////
exx:=createoleobject('excel.application');
exx.visible:=false;
exx.DisplayAlerts:=False;
exx.workbooks.add;
try
exx.ActiveSheet.PageSetup.Orientation := xlLandscape;
exx.ActiveSheet.PageSetup.topmargin:=0;
exx.ActiveSheet.PageSetup.bottommargin:=0;
exx.ActiveSheet.PageSetup.leftmargin:=0;
exx.ActiveSheet.PageSetup.rightmargin:=0;
except
end;
exx.activeworkbook.activesheet.Rows[1].Font.Bold := True;
exx.activeworkbook.activesheet.cells.item[1,1].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,2].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,3].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,4].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,5].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,6].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,7].NumberFormat:='@';
exx.activeworkbook.activesheet.cells.item[1,1]:='№';
exx.activeworkbook.activesheet.cells.item[1,2]:='Дата оформления';
exx.activeworkbook.activesheet.cells.item[1,3]:='Тип операции';
exx.activeworkbook.activesheet.cells.item[1,4]:='Номер выданной карты';
exx.activeworkbook.activesheet.cells.item[1,5]:='ФИО получателя';
exx.activeworkbook.activesheet.cells.item[1,6]:='№ магазина';
exx.activeworkbook.activesheet.cells.item[1,7]:='Дата выдачи';
exx.activeworkbook.activesheet.cells.item[1,8]:='Выдача карты';
exx.activeworkbook.activesheet.cells.item[1,1].ColumnWidth := 5;
exx.activeworkbook.activesheet.cells.item[1,2].ColumnWidth := 20;
exx.activeworkbook.activesheet.cells.item[1,3].ColumnWidth := 20;
exx.activeworkbook.activesheet.cells.item[1,4].ColumnWidth := 20;
exx.activeworkbook.activesheet.cells.item[1,5].ColumnWidth := 25;
exx.activeworkbook.activesheet.cells.item[1,6].ColumnWidth := 9;
exx.activeworkbook.activesheet.cells.item[1,7].ColumnWidth := 20;
////

gauge.MaxValue:=ado2.RecordCount;
gauge.Visible:=true;
ado2.First;
//showmessage(datetostr(dates)+' '+datetostr(datepo));
for j:=1 to ado2.RecordCount do
 begin
 gauge.Value:=j;
 application.ProcessMessages;
 try
 ddd:=strtodate(ado2.FieldValues ['Дата_оформления']);
 except
 ddd:=strtodate('01.01.1980');
 end;
if (ddd>=dates) and (ddd<=datepo) then
  begin
  if ado.Locate('old',trim(ado2.FieldValues ['Номер_выданной_карты']),[locaseinsensitive]) then
   begin
   new:='';
   try
   new:=chr(10)+ado.FieldValues ['new1'];
   except
   end;
   try
   new:=new+chr(10)+ado.FieldValues ['new2'];
   except
   end;
   try
   new:=new+chr(10)+ado.FieldValues ['new3'];
   except
   end;
   ex.activeworkbook.activesheet.cells.item[row,1].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,2].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,3].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,4].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,5].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,6].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,7].NumberFormat:='@';
   ex.activeworkbook.activesheet.cells.item[row,1]:=inttostr(npp);
   ex.activeworkbook.activesheet.cells.item[row,4]:=trim(new);
   ex.activeworkbook.activesheet.cells.item[row,2]:=ado2.FieldValues['Дата_оформления'];
   ex.activeworkbook.activesheet.cells.item[row,3]:=ado2.FieldValues['Тип_операции'];
   ex.activeworkbook.activesheet.cells.item[row,5]:=ado2.FieldValues['ФИО_получателя'];
   ex.activeworkbook.activesheet.cells.item[row,6]:=ado2.FieldValues['Номер_магазина'];
   ex.activeworkbook.activesheet.cells.item[row,7]:=ado2.FieldValues['Дата_выдачи'];
   inc(row);inc(npp);
   end
   else
   begin ///БРАК!!!!!!!!!!!!!!!
   brak:=true;
   exx.activeworkbook.activesheet.cells.item[row1,1].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,2].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,3].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,4].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,5].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,6].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,7].NumberFormat:='@';
   exx.activeworkbook.activesheet.cells.item[row1,1]:=inttostr(npp1);
   exx.activeworkbook.activesheet.cells.item[row1,4]:=ado2.FieldValues ['Номер_выданной_карты'];
   exx.activeworkbook.activesheet.cells.item[row1,2]:=ado2.FieldValues['Дата_оформления'];
   exx.activeworkbook.activesheet.cells.item[row1,3]:=ado2.FieldValues['Тип_операции'];
   exx.activeworkbook.activesheet.cells.item[row1,5]:=ado2.FieldValues['ФИО_получателя'];
   exx.activeworkbook.activesheet.cells.item[row1,6]:=ado2.FieldValues['Номер_магазина'];
   exx.activeworkbook.activesheet.cells.item[row1,7]:=ado2.FieldValues['Дата_выдачи'];
   inc(row1);inc(npp1);

   end;
  end;
 ado2.Next;
 end;


for y1:=1 to ex.ActiveSheet.UsedRange.rows.Count do
 begin
 ex.activeworkbook.activesheet.Rows[y1].HorizontalAlignment := 3;
 ex.activeworkbook.activesheet.Rows[y1].verticalAlignment := 2;
  for y2:=1 to ex.ActiveSheet.UsedRange.columns.Count do
   begin
    ex.activeworkbook.activesheet.Cells[y1,y2].Borders.lineStyle := 1;
    ex.activeworkbook.activesheet.Cells[y1,y2].WrapText:=true;
   end;
 end;
if brak=true then begin
for y1:=1 to exx.ActiveSheet.UsedRange.rows.Count do
 begin
 exx.activeworkbook.activesheet.Rows[y1].HorizontalAlignment := 3;
 exx.activeworkbook.activesheet.Rows[y1].verticalAlignment := 2;
  for y2:=1 to exx.ActiveSheet.UsedRange.columns.Count do
   begin
    exx.activeworkbook.activesheet.Cells[y1,y2].Borders.lineStyle := 1;
    exx.activeworkbook.activesheet.Cells[y1,y2].WrapText:=true;
   end;
 end;end;

Ex.ActiveWorkbook.SaveAs(saver.filename);
ex.application.quit;
ex:=unassigned;
if brak=true then Exx.ActiveWorkbook.SaveAs(strtr(uppercase(saver.filename),'.XLS','_brak.xls'));
exx.application.quit;
exx:=unassigned;
gauge.Visible:=false;
bsSkinMessage1.MessageDlg ('Готово!',mtinformation,[mbyes],0);
end;

 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 11.6.2008, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Riddik @  3.6.2008,  20:43 Найти цитируемый пост)
Из DBGrid можно выводить, только я не нашёл как.

зачем тебе DBGrid, он лишь отображает то, что живёт в датасете, вот и работай с датасетом, а на с гридом
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.