
22.06.2015, 00:17
|
Прохожий
|
|
Регистрация: 10.06.2015
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
|
|
получается, что я эту таблицу потом вывожу в ворд, как отчет, здесь это как-то задать можно?
процедура вывода:
Код:
procedure TForm1.N2Click(Sender: TObject);
const//зазадается рапределение данных на листе
wdAlignParagraphCenter = 1;
wdAlignParagraphLeft = 0;
wdAlignParagraphRight = 2;
wdLineStyleSingle = 1;
var
sd: TSaveDialog;
wdApp, wdDoc, wdRng, wdTable : OLEVariant;
i, j, Res : Integer;
D : TDateTime;
Bm : TBookMark;
begin
Sd := SaveDialog1;
{Сохранение таблицы в документ, запрос разрешения для сохранения}
if Sd.InitialDir = '' then Sd.InitialDir := ExtractFilePath( ParamStr(0) );
if not Sd.Execute then Exit;
if FileExists(Sd.FileName) then begin
Res := MessageBox(0, Файл с данным именем уже существует. Перазаписать?'
, Внимание! ', MB_YESNO + MB_ICONQUESTION + MB_APPLMODAL);
if Res <> IDYES then Exit;
end;
// запуск MS Word.
try
wdApp:=CreateOleObject('word.Application') ;
except
MessageBox(0, ' Не удалось запустить MS Word. Действие отменено..'
,’внимание!', MB_OK + MB_ICONERROR + MB_APPLMODAL);
Exit;
end;
//окно MS Word. видимо.
wdApp.Visible := True;
//создание нового документа.
wdDoc := wdApp.Documents.Add;
wdApp.ScreenUpdating := False;
try
wdRng := wdDoc.Content; // Диапазон, охватывающий всё содержимое документа.
//Заголовок отчета
wdRng.InsertAfter(План финансово-хозяйственной деятльености' '#13#10);
//выравнивание по центру
wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
//параметры шрифта.
wdRng.Font.Name := 'Times New Roman';
wdRng.Font.Bold := True;
wdRng.Font.Size := 12;
//диапазон нового параграфа непосредственно за текущим диапазоном.
wdRng.Start := wdRng.End;
wdRng.InsertAfter(#13#10);
D := Now;
wdRng.InsertAfter('дата: ' + FormatDateTime('dd.mm.yyyy', D) + #13#10);
wdRng.InsertAfter('время: ' + FormatDateTime('hh:nn:ss', D) + #13#10);
// Сброс параметров параграфа.
wdRng.ParagraphFormat.Reset;
wdRng.InsertAfter('утверждаю '+ #13#10 );
wdRng.InsertAfter('главный бухгалтер' + #13#10);
wdRng.InsertAfter('Начальник преприятия + #13#10);
wdRng.ParagraphFormat.Alignment := wdAlignParagraphRight;
wdRng.ParagraphFormat.Reset;
//выравнивание по левому краю.
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
// Параметры шрифта.
wdRng.Font.Reset;
wdRng.Font.Size := 12;
wdRng.Font.Bold := True;
// Заголовок таблицы.
wdRng.Start := wdRng.End;
wdRng.InsertAfter(('Таблица '#13#10);
wdRng.ParagraphFormat.Reset;
wdRng.Font.Reset;
wdRng.Font.Size := 12;
wdRng.Font.Bold := False;
// Таблица.
if not ADOTable1.Active then ADOTable1.Open;
wdRng.Start := wdRng.End;
// Добавляем таблицу MS Word. создаём таблицу с двумя строками.
wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2, ADOTable1.Fields.Count);
// Параметры линий таблицы
wdTable.Borders.InsideLineStyle := wdLineStyleSingle;
wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
// Сброс параметров параграфа.
wdRng.ParagraphFormat.Reset;
// Выравнивание всей таблицы - по левому краю
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
// Оформление шапки
wdRng := wdTable.Rows.Item(1).Range; // Диапазон первой строки.
wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
wdRng.Font.Size := 10;
wdRng.Font.Bold := True;
// Оформление первой строки данных - вторая строка в таблице
// При добавлении следующих строк, их оформление будет копироваться с этой строки.
wdRng := wdTable.Rows.Item(2).Range; //Äèàïàçîí âòîðîé ñòðîêè.
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
wdRng.Font.Size := 10;
wdRng.Font.Bold := False;
//шапка таблицы.
for i := 0 to ADOTable1.Fields.Count - 1 do
wdTable.Cell(1, i + 1).Range.Text := ADOTable1.Fields[i].DisplayName;
//данные таблиц.
ADOTable1.DisableControls;
Bm := ADOTable1.GetBookMark;
ADOTable1.First;
i := 1; //текущая строка в MS Word.
while not ADOTable1.Eof do begin
Inc(i);
// Если требуется, добавляем новую строку в конец таблицы.
if i > 2 then wdTable.Rows.Add;
// Записываем данные в строку таблицы MS Word.
for j := 0 to ADOTable1.Fields.Count - 1 do
wdTable.Cell(i, j + 1).Range.Text := ADOTable1.Fields[j].AsString;
ADOTable1.Next;
end;
ADOTable1.GotoBookMark(Bm);
ADOTable1.EnableControls;
finally
// Включение перерисовки окна MS Word.
wdApp.ScreenUpdating := True;
|