Форум: "Основная";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];
ВнизИз БД да в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c