下面的程序是把DBGRID的内容转到EXCEL中,你的要求都可以实现procedure Tfrmsunycodeuser.BitBtn1Click(Sender: TObject);
var
MsExcel: oleVariant;
ExcelSheet1: Variant;
i:integer;
Bm: TBookStr;
row: integer; //Excel行
begin
try
MsExcel:=CreateOleObject('Excel.Application');
except
MessageBox(Handle,'初始化Excel错误。可能没有安装EXCEL',
'error',MB_OK +MB_ICONERROR);
exit;
end; Screen.Cursor:=crHourGlass;
MsExcel.Visible:=False;
MsExcel.WorkBooks.Add;
ExcelSheet1:= MsExcel.WorkBooks[1].WorkSheets[1];
Bm := dbgrid1.DataSource.DataSet.Book;
dbgrid1.DataSource.DataSet.first;
dbgrid1.DataSource.DataSet.DisableControls;
try
for i:=0 to dbgrid1.Columns.Count -1 do
begin
if dbGrid1.Columns[I].Visible then
ExcelSheet1.Cells.Item[1,i+1]:=dbgrid1.Columns[i].Title.Caption; //标题
end;
row:=2;
while not dbgrid1.DataSource.DataSet.Eof do
begin
for I := 0 to dbGrid1.Columns.Count - 1 do
begin
if dbGrid1.Columns[I].Visible then
ExcelSheet1.Cells[Row, i+1] := dbGrid1.Columns[I].Field.DisplayText;
end;
row:=row+1;
dbgrid1.DataSource.DataSet.Next;
end;
MsExcel.Visible:=True;
Screen.Cursor:=crDefault;
finally
dbgrid1.DataSource.DataSet.enableControls;
dbgrid1.DataSource.DataSet.Book:=bm;
end;
end;
--------------------------------------------------------------------------------
var
MsExcel: oleVariant;
ExcelSheet1: Variant;
i:integer;
Bm: TBookStr;
row: integer; //Excel行
begin
try
MsExcel:=CreateOleObject('Excel.Application');
except
MessageBox(Handle,'初始化Excel错误。可能没有安装EXCEL',
'error',MB_OK +MB_ICONERROR);
exit;
end; Screen.Cursor:=crHourGlass;
MsExcel.Visible:=False;
MsExcel.WorkBooks.Add;
ExcelSheet1:= MsExcel.WorkBooks[1].WorkSheets[1];
Bm := dbgrid1.DataSource.DataSet.Book;
dbgrid1.DataSource.DataSet.first;
dbgrid1.DataSource.DataSet.DisableControls;
try
for i:=0 to dbgrid1.Columns.Count -1 do
begin
if dbGrid1.Columns[I].Visible then
ExcelSheet1.Cells.Item[1,i+1]:=dbgrid1.Columns[i].Title.Caption; //标题
end;
row:=2;
while not dbgrid1.DataSource.DataSet.Eof do
begin
for I := 0 to dbGrid1.Columns.Count - 1 do
begin
if dbGrid1.Columns[I].Visible then
ExcelSheet1.Cells[Row, i+1] := dbGrid1.Columns[I].Field.DisplayText;
end;
row:=row+1;
dbgrid1.DataSource.DataSet.Next;
end;
MsExcel.Visible:=True;
Screen.Cursor:=crDefault;
finally
dbgrid1.DataSource.DataSet.enableControls;
dbgrid1.DataSource.DataSet.Book:=bm;
end;
end;
--------------------------------------------------------------------------------
v:Variant;
begin
v:=CreateOleobject(‘Excel.Application’);
v.Visible:=true;
end; 其中,Comobj中包含了用来检索OLE的对象和向其传发命令的例程,第一行代码启动Excel,执行后Excel会在内存中出现,因此第二行代码使之可见。 2.关闭Excel 在创建了Excel Application对象后,调用它的Quit方法完成关闭事件。 If not varIsEmpty(v) then v.quit; 如果需要在关闭前确定是否存盘,加入: v.DiaplayAlert:=true; //确定存盘
v.DiaplayAlert:=false;//不存盘,直接退出 3.加入工作表及对其表格内容的操作 var
Sheet: Variant;
begin
v.workbook.add;
v.Workbooks.Add;
v.Workbooks[1].WorkSheets[1].Name := '数据录入';
Sheet:= v.Workbooks[1].WorkSheets['数据录入'];
Sheet.Cells[1,1] :='试验'; Label1.Caption:=Sheet.Cells[1,1];
End; Sheet对象是很多页的集合,其他的Workbooks是工作薄的集合,WorkSheets对象是工作表的集合,Charts对象是图表的集合。 4.格式的设置 var
Range: Variant;
begin
Range := v.Workbooks[1].WorkSheets['数据录入'].Range['A2:M2’]; //单元格从A2到M2 Range.Merge; //合并单元格
Range.Rows.RowHeight := 20; //设置行高
Range.Borders.LineStyle := 1; //加边框
Range.Columns[2].ColumnWidth := 12; // 设置列宽
Range.FormulaR1C1 := '标题';
Range.HorizontalAlignment := xlCenter; //水平对齐方式
Range.VerticalAlignment := xlCenter; //垂直对齐方式
Range.Characters.Font.Name := '宋体'; //字体
Range.Characters.Font.FontStyle := '加粗';
Range.Characters.Font.Size := 12;
Range.Characters.Font.OutlineFont := False; //是否有下划线
Range.Characters.Font.ColorIndex := xlAutomatic; //颜色
end; 其他的属性可以察看MSDN或者其他资料。 试试吧。提醒你,你的机子装了Excel没有……