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

Вниз

Экспорт DBGrig в Excel   Найти похожие ветки 

 
Yermek   (2004-02-13 00:20) [0]

Для экспорта DBGrid в Excel нашел вот это кусок кода, но куда его всавлять и вообще что то не верится мне что это будет работать. Подскажите пожалуста в каком направлении копать надо?

Export_Excel(
// DBGrid из которого производиться экспорт
DBGrid:TDBGrid;
// Дополнительная информация печатаемая вначале документа
Header:String="";
// Дополнительная информация печатаемая в конце документа
footer:String="");


 
raptorus ©   (2004-02-14 09:44) [1]

Вот готовый код по экспортированию DBGRid в Excel или Clipboard

// ЗАМЕЧАНИЕ: этот метод должен включать COMObj, Excel97 units

// ОБНОВЛЕНИЕ: если Вы используете Delphi 4, то замените xlWBatWorkSheet на 1 (один)

//-----------------------------------------------------------
// если toExcel = false, то экспортируем содержимое dbgrid в Clipboard
// если toExcel = true, то экспортируем содержимое dbgrid в Microsoft Excel
//-----------------------------------------------------------

procedure ExportDBGrid(toExcel: Boolean);
var
bm: TBookmark;
col, row: Integer;
sline: string;
mem: TMemo;
ExcelApp: Variant;
begin
Screen.Cursor := crHourglass;
DBGrid1.DataSource.DataSet.DisableControls;
bm := DBGrid1.DataSource.DataSet.GetBookmark;
DBGrid1.DataSource.DataSet.First;

// создаём объект Excel
if toExcel then
begin
ExcelApp := CreateOleObject("Excel.Application");
ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
ExcelApp.WorkBooks[1].WorkSheets[1].name := "Grid Data";
end;

// Сперва отправляем данные в memo
// работает быстрее, чем отправлять их напрямую в Excel
mem := TMemo.Create(Self);
mem.Visible := false;
mem.Parent := MainForm;
mem.Clear;
sline := "";

// добавляем информацию для имён колонок
for col := 0 to DBGrid1.FieldCount-1 do
sline := sline + DBGrid1.Fields[col].DisplayLabel + #9;
mem.Lines.Add(sline);

// получаем данные из memo
for row := 0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
begin
sline := "";
for col := 0 to DBGrid1.FieldCount-1 do
sline := sline + DBGrid1.Fields[col].AsString + #9;
mem.Lines.Add(sline);
DBGrid1.DataSource.DataSet.Next;
end;

// копируем данные в clipboard
mem.SelectAll;
mem.CopyToClipboard;

// если необходимо, то отправляем их в Excel
// если нет, то они уже в буфере обмена
if toExcel then
begin
ExcelApp.Workbooks[1].WorkSheets["Grid Data"].Paste;
ExcelApp.Visible := true;
end;

FreeAndNil(ExcelApp);
DBGrid1.DataSource.DataSet.GotoBookmark(bm);
DBGrid1.DataSource.DataSet.FreeBookmark(bm);
DBGrid1.DataSource.DataSet.EnableControls;
Screen.Cursor := crDefault;
end;


 
Yermek   (2004-02-14 16:15) [2]

Спасибо за код примного благодарен


 
Yermek   (2004-02-18 21:23) [3]

Код выдает ошибку в строке FreeAndNil(ExcelApp), я использую Excel 2000 и w2k.
Excel не отображает руские буквы, может это в самом DBD шрифт изменять надо или в шрифтах таблицы (Table Language)?



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
14-6217
Думкин
2004-02-11 06:43
2004.03.03
11 февраля


1-6075
Артем
2004-02-21 08:47
2004.03.03
Гиперссылки в документах Word


1-6113
HMT
2004-02-21 19:52
2004.03.03
Как присвоить значение сразу нескольким переменным? (обьектам ?)


1-6077
alless
2004-02-20 19:30
2004.03.03
ScrollBar


3-5964
Krez
2004-02-05 16:11
2004.03.03
Заполнение значениями