Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > DBGrid в Word


Автор: weg 22.3.2010, 17:52
Всем привет у меня такая проблема не могу правильно вывести из dbgrid в word подскажите что не так
Код

procedure TfrmMain.GoToWord(Sender: TObject);
var
W, Table: Variant;
i, j: Integer;
begin
W := CreateOleObject('Word.Application');
W.Documents.Add;
W.ActiveDocument.Tables.Add(W.ActiveDocument.Range ,
dbgrMain.DataSource.DataSet.RecordCount, dbgrMain.DataSource.DataSet.FieldCount);
Table := W.ActiveDocument.Tables.Item(1);
Table.Style := 'Сетка таблицы';
dbgrMain.DataSource.DataSet.First;
for i := 0 to dbgrMain.DataSource.DataSet.RecordCount-1 do
begin
for j := 0 to dbgrMain.DataSource.DataSet.FieldCount - 1 do
Table.Cell(i+1,j+1).Range.InsertBefore(dbgrMain.Da taSource.DataSet.Fields[j].AsString);
dbgrMain.DataSource.DataSet.Next;
end;
W.Visible := True;
end;

user posted image

Автор: Frees 22.3.2010, 17:58
Код

procedure TfrmMain.GoToWord(Sender: TObject);
var
W, Table: Variant;
i, j: Integer;
begin
W := CreateOleObject('Word.Application');
W.Documents.Add;
W.ActiveDocument.Tables.Add(W.ActiveDocument.Range ,
dbgrMain.DataSource.DataSet.RecordCount, dbgrMain.DataSource.DataSet.FieldCount);
Table := W.ActiveDocument.Tables.Item(1);
Table.Style := 'Сетка таблицы';
dbgrMain.DataSource.DataSet.First;
for i := 0 to dbgrMain.DataSource.DataSet.RecordCount-1 do
begin
for j := 0 to dbgrMain.Columns.Count - 1 do //перебирать колонки грида а не дата сета
Table.Cell(i+1,j+1).Range.InsertBefore(dbgrMain.Columns[j].Field.AsString);
dbgrMain.DataSource.DataSet.Next;
end;
W.Visible := True;
end;

Автор: weg 22.3.2010, 18:11
Спасибо огромное smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)