Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

Из БД да в Exel   Найти похожие ветки 

 
Zevsus   (2002-04-29 18:19) [0]

Здравствуйте! Вот насущный вопрос.. Ноужно TStringGrid превратить в документ Exel...
спасибо большое!
простите, если вопрос глупым показался..


 
alxx   (2002-04-29 19:21) [1]

Я вот в свое время такое написал: Оно DBGrid переносит (из БД).
Правда, может быть где-то маленькие глюки есть...

unit UExc;

INTERFACE

Uses Variants, ComCtrls, db,dbgrids,ComObj,sysUtils,Graphics, Classes;

Procedure ExportToExcel(Grid:TDBGrid);

IMPLEMENTATION

Procedure ExportToExcel(Grid:TDBGrid);
var
WorkBook, Cell: Variant;
s:string;
ds:TDataSet;
i,j:Integer;
dese:Char;
Excel:Variant;
Sheet:Variant;
Row:Integer;
Begin
Excel:=UnAssigned; // Соединяемся с Excel
Excel:=CreateOleObject("Excel.Application");
Excel.Visible:=True;
Excel.DisplayAlerts:=false;
Excel.WorkBooks.Add;

Excel.SheetsInNewWorkbook := 1; // Добавляем рабочую книгу
WorkBook := Excel.WorkBooks.Add;
Sheet := WorkBook.WorkSheets[1];
Sheet.Cells.VerticalAlignment := $FFFFEFF4; // xlCenter
Sheet.Name:="Отчет"; //

// dese:=DecimalSeparator;

ds:=Grid.DataSource.DataSet;
// DecimalSeparator:=".";
Row:=3; // Оставим место (допустим для названия

Sheet.Rows[Row].Font.Bold := True; // Жирный шрифт для заголовков
Sheet.Rows[Row].RowHeight:=40;

For i:=0 to Grid.Columns.Count-1 do
Begin
s:=Grid.Columns.Items[i].Title.Caption;
Sheet.Cells[Row, i+1]:=s;

Cell:=Sheet.Cells[Row, i+1];
Cell.Borders.LineStyle:=1;
Cell.Interior.Color:=clLtGray;
End;

ds.First;

While not ds.Eof do
Begin
Inc(Row);
For i:=0 to Grid.Columns.Count-1 do
Begin
Cell:=Sheet.Cells[Row, i+1];
If Grid.Columns.Items[i].Field.DataType = ftBoolean Then
Begin
If Grid.Columns.Items[i].Field.AsBoolean then s:="Да" Else s:="";
End
Else
Begin
s:=Grid.Columns.Items[i].Field.AsString;
End;

If s="02.01.00" Then Cell.Value:="" Else Cell.Value:=s;

Cell.Borders.LineStyle:=1;
Cell.HorizontalAlignment := $FFFFEFF4;
If i=0 Then
Cell.Interior.Color:=clLtGray;
End;

ds.Next;
End;

Sheet.Cells.Columns.AutoFit;

// DecimalSeparator:=dese;
End;

End.


 
MBo   (2002-04-30 05:50) [2]

Если это разовое дело, можно через Clipboard перенести.
Пример
http://delphibase.endimus.com/?action=viewfunc&topic=vclctrl&index=5

Advertisment :)


 
Zevsus   (2002-04-30 11:26) [3]

Супер! :) всем спасибо, от радости аж запрыгал, когда заработало :)
Хотелось бы теперь, чтобы этот файл сразу же сохранился..
По моему, это нельзя сделать через OLE..


 
AFROLOV   (2002-04-30 11:45) [4]

Можно.
Посмотри метод Save в справке по VBA.



Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
3-49819
ao1973
2002-04-18 11:44
2002.05.16
КАК програмно СОЗДАТЬ файл БД ACESS-a ?


14-50103
SPeller
2002-04-07 03:14
2002.05.16
Как подписаться на RSDN Magazine ???


14-50122
Olivka
2002-04-07 20:37
2002.05.16
FoxPro


4-50179
Win32
2002-03-13 19:34
2002.05.16
Как УДАЛИТЬ ключ из реестра, зная его имя?


3-49820
ARO
2002-04-18 08:58
2002.05.16
Компонент для работы с Clipper