Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.006 c
4-50168
Dikma
2002-03-12 15:39
2002.05.16
CHM файл


6-50062
dimmu
2002-02-19 19:42
2002.05.16
Использование TTcpServer/TTcpClient и TServerSocket/TClientSocket


3-49822
Maloy
2002-04-18 13:06
2002.05.16
Создание вычисляемого поля базы.


1-49983
Akim2
2002-04-28 21:03
2002.05.16
Помогите с DDE


4-50181
zondor
2002-03-13 19:29
2002.05.16
Clipboard





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский