вот, посмотри процедуру из моего старинного приложения
Код:
procedure TMainUnit.ReportExcelClick(Sender: TObject);
var XLApp, Sheet, Column : Variant;
index,i,i1,i2,i3,i4,i5 : integer;
const
xlCenter = -4108;
begin
frmProgress.Position := poMainFormCenter;
MainUnit.Enabled := False;
frmProgress.ProgBar.Max := DataMod.Books.RecordCount;
XLApp := CreateOleObject('Excel.Application');
//Добавляем новую книгу
XLApp.Workbooks.add(-4167);
//Делаем таблицу невидимой
XLApp.ActiveWindow.DisplayGridlines:=False;
XLApp.workbooks[1].WorkSheets[1].Name := Tables.ComboBox1.Text;
Column := XLApp.workbooks[1].WorkSheets[Tables.ComboBox1.Text].Columns;
Column.Columns[1].ColumnWidth := 50;
Column.Columns[2].ColumnWidth := 20;
Column.Columns[3].ColumnWidth := 10;
//Меням шрифт
for i4 := 1 to 4 do
for i5 := 1 to 3 do
Column.Columns[i5].Font.Name := 'Courier New';
Column := XLApp.Workbooks[1].Worksheets[Tables.ComboBox1.Text].Rows;
Column.Rows[1].Font.Bold := True;
//Column.Rows[1].Font.Bold := True;
// Column.Rows[1].Font.Color := clRed;
//Column.Rows[1].Font.Size := 14;
Sheet := XLApp.Workbooks[1].Worksheets[Tables.ComboBox1.Text];
//Sheet.Cells[1,1]:=Tables.ComboBox1.Text;
Sheet.Cells[1,1]:='Название фильма';
Sheet.Cells[1,2]:='Жанр';
Sheet.Cells[1,3]:='CD';
//Сортируем
If MainUnit.NoSort.Checked = True then
DataMod.Books.Sort := '';
If MainUnit.SortNameFilm.Checked = True then
DataMod.Books.Sort := 'Название ASC';
frmProgress.Show;
//Начинае с 2-й строки
index:=2;
DataMod.Books.First;
//Делаем обрисовку
for i1:= 1 to 4 do
for i2:= 1 to 1 do
XLApp.Cells[2,i2].Borders[i1].LineStyle := 1;
//Записываем данные из базы в таблицу
for i := 0 to DataMod.Books.RecordCount-1 do
begin
Sheet.Cells[index,1]:=DataMod.Books.Fields.Fields[1].AsString;
Sheet.Cells[index,2]:=DataMod.Books.Fields.Fields[3].AsString;
Sheet.Cells[index,3]:=DataMod.Books.Fields.Fields[4].AsString;
inc(index);
frmProgress.ProgBar.Position := index;
DataMod.Books.Next;
for i2:= 1 to 4 do
for i3:= 1 to 3 do
XLApp.Cells[index-1,i3].Borders[i2].LineStyle :=3;
//Выделяем по центру
XLApp.Workbooks[1].Worksheets[Tables.ComboBox1.Text].Rows[1].HorizontalAlignment := xlCenter;
XLApp.Workbooks[1].Worksheets[Tables.ComboBox1.Text].Columns[index-1].HorizontalAlignment := xlCenter;
//XLApp.Workbooks[1].Worksheets[Tables.ComboBox1.Text].Columns[index-2].HorizontalAlignment := xlCenter;
end;
xlapp.ActiveSheet.PageSetup.LeftMargin := xlapp.Application.InchesToPoints(0.984251968503937);
xlapp.ActiveSheet.PageSetup.RightMargin := XLApp.Application.InchesToPoints(0.78740157480315);
xlapp.ActiveSheet.PageSetup.TopMargin := XLApp.Application.InchesToPoints(0.393700787401575);
xlapp.ActiveSheet.PageSetup.BottomMargin := XLApp.Application.InchesToPoints(0.590551181102362);
xlapp.ActiveSheet.PageSetup.HeaderMargin := XLApp.Application.InchesToPoints(0.511811023622047);
xlapp.ActiveSheet.PageSetup.FooterMargin := XLApp.Application.InchesToPoints(0.511811023622047);
XLApp.Visible := True;
// XLApp.ActiveWindow.SelectedSheets.PrintPreview;
frmProgress.Close;
DataMod.Books.First;
MainUnit.Enabled := True;
да и не забудь в uses добавить модуль comobj