С помощью следующего кода, импортирую содержимое DBGrid в Excel:
var XLApp,Sheet,Colum:Variant; index,i:Integer; begin XLApp:= CreateOleObject('Excel.Application'); XLApp.Visible:=true; XLApp.Workbooks.Add(-4167); XLApp.Workbooks[1].WorkSheets[1].Name:='Отчёт'; Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Columns; Colum.Columns[1].ColumnWidth:=20; Colum.Columns[2].ColumnWidth:=20; Colum.Columns[3].ColumnWidth:=20; Colum.Columns[4].ColumnWidth:=20; Colum.Columns[5].ColumnWidth:=20; Colum:=XLApp.Workbooks[1].WorkSheets['Отчёт'].Rows; Colum.Rows[2].Font.Bold:=true; Colum.Rows[1].Font.Bold:=true; Colum.Rows[1].Font.Color:=clBlue; Colum.Rows[1].Font.Size:=14; Sheet:=XLApp.Workbooks[1].WorkSheets['Отчёт']; Sheet.Cells[1,2]:='Столбец №1'; Sheet.Cells[2,1]:='Столбец №2'; Sheet.Cells[2,2]:='Столбец №3'; Sheet.Cells[2,3]:='Столбец №4'; Sheet.Cells[2,4]:='Столбец №5'; Sheet.Cells[2,5]:='Столбец №6'; index:=3; DataModule1.BookTable.First; for i:=0 to DataModule1.BookTable.RecordCount-1 do begin Sheet.Cells[index,1]:=DataModule1.BookTable.Fields.Fields[1].AsString; Sheet.Cells[index,2]:=DataModule1.BookTable.Fields.Fields[2].AsString; Sheet.Cells[index,3]:=DataModule1.BookTable.Fields.Fields[3].AsString; Sheet.Cells[index,4]:=DataModule1.BookTable.Fields.Fields[5].AsString; Sheet.Cells[index,5]:=FormatDateTime('dddddd', DataModule1.BookTable.Fields.Fields[6].AsDateTime); Inc(index); DataModule1.BookTable.Next; end;
Но при печати данные в разных столбцах ничем не разграничены и сливаются. Можно ли как-нибудь в программе заранее задать чтобы все печаталось с сеткой, или данные в некоторых столбцах выровнять по центру. Добавляю в код: colum.Columns[2].HorizontalAlignment:=tacenter; Но почему то после этого все данные прижимаются к левой границе ячеек. Подскажите, можно ли для решения проблемы внести изменения в этот код, или воспользоваться каким-нибудь другим вариантом?
Сообщение отредактировано: 1147 - 13.08.2009 19:12