Главная страница
    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
14-50108
MJH
2002-04-05 20:14
2002.05.16
НайтроАмп (NitroAmp)


1-49908
_aero_
2002-05-02 15:51
2002.05.16
MeasureItem


6-50073
BDRON
2002-03-05 19:04
2002.05.16
Как использоать созданное соединение?


14-50130
Sergo
2002-04-08 18:39
2002.05.16
CB5


1-49947
BigBadMutuh
2002-05-01 09:34
2002.05.16
Как узнать время?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский