(一) 使用动态创建的方法
首先创建 Excel 对象,使用ComObj:
var ExcelApp: Variant;
ExcelApp : = CreateOleObject( ’Excel.Application’ );
1 ) 显示当前窗口:
ExcelApp.Visible : = True;
2 ) 更改 Excel 标题栏:
ExcelApp.Caption : = ’应用程序调用 Microsoft Excel’;
3 ) 添加新工作簿:
ExcelApp.WorkBooks.Add;
4 ) 打开已存在的工作簿:
ExcelApp.WorkBooks.Open( ’C:\Excel\Demo.xls’ );
5 ) 设置第2个工作表为活动工作表:
ExcelApp.WorkSheets[ 2 ].Activate; 或
ExcelApp.WorksSheets[ ’Sheet2’ ].Activate;
6 ) 给单元格赋值:
ExcelApp.Cells[ 1 , 4 ].value : = ’第一行第四列’;
7 ) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApp.ActiveSheet.Columns[ 1 ].ColumnsWidth : = 5 ;
8 ) 设置指定行的高度(单位:磅)( 1 磅= 0.035 厘米),以第二行为例:
ExcelApp.ActiveSheet.Rows[ 2 ].RowHeight : = 1 / 0.035 ; // 1 厘米
9 ) 在第8行之前插入分页符:
ExcelApp.WorkSheets[ 1 ].Rows[ 8 ].PageBreak : = 1 ;
10 ) 在第8列之前删除分页符:
ExcelApp.ActiveSheet.Columns[ 4 ].PageBreak : = 0 ;
11 ) 指定边框线宽度:
ExcelApp.ActiveSheet.Range[ ’B3:D4’ ].Borders[ 2 ].Weight : = 3 ;
1 - 左 2 - 右 3 - 顶 4 - 底 5 - 斜( \ ) 6 - 斜( / )
12 ) 清除第一行第四列单元格公式:
ExcelApp.ActiveSheet.Cells[ 1 , 4 ].ClearContents;
13 ) 设置第一行字体属性:
ExcelApp.ActiveSheet.Rows[ 1 ].Font.Name : = ’隶书’;
ExcelApp.ActiveSheet.Rows[ 1 ].Font.Color : = clBlue;
ExcelApp.ActiveSheet.Rows[ 1 ].Font.Bold : = True;
ExcelApp.ActiveSheet.Rows[ 1 ].Font.UnderLine : = True;
14 ) 进行页面设置:
a.页眉:
ExcelApp.ActiveSheet.PageSetup.CenterHeader : = ’报表演示’;
b.页脚:
ExcelApp.ActiveSheet.PageSetup.CenterFooter : = ’第 & P页’;
c.页眉到顶端边距2cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin : = 2 / 0.035 ;
d.页脚到底端边距3cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin : = 3 / 0.035 ;
e.顶边距2cm:
ExcelApp.ActiveSheet.PageSetup.TopMargin : = 2 / 0.035 ;
f.底边距2cm:
ExcelApp.ActiveSheet.PageSetup.BottomMargin : = 2 / 0.035 ;
g.左边距2cm:
ExcelApp.ActiveSheet.PageSetup.LeftMargin : = 2 / 0.035 ;
h.右边距2cm:
ExcelApp.ActiveSheet.PageSetup.RightMargin : = 2 / 0.035 ;
i.页面水平居中:
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally : = 2 / 0.035 ;
j.页面垂直居中:
ExcelApp.ActiveSheet.PageSetup.CenterVertically : = 2 / 0.035 ;
k.打印单元格网线:
ExcelApp.ActiveSheet.PageSetup.PrintGridLines : = True;
15 ) 拷贝操作:
a.拷贝整个工作表:
ExcelApp.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:
ExcelApp.ActiveSheet.Range[ ’A1:E2’ ].Copy;
c.从A1位置开始粘贴:
ExcelApp.ActiveSheet.Range.[ ’A1’ ].PasteSpecial;
d.从文件尾部开始粘贴:
ExcelApp.ActiveSheet.Range.PasteSpecial;
16 ) 插入一行或一列:
a. ExcelApp.ActiveSheet.Rows[ 2 ].Insert;
b. ExcelApp.ActiveSheet.Columns[ 1 ].Insert;
17 ) 删除一行或一列:
a. ExcelApp.ActiveSheet.Rows[ 2 ].Delete;
b. ExcelApp.ActiveSheet.Columns[ 1 ].Delete;
18 ) 打印预览工作表:
ExcelApp.ActiveSheet.PrintPreview;
19 ) 打印输出工作表:
ExcelApp.ActiveSheet.PrintOut;
20 ) 工作表保存:
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveSheet.PrintPreview;
21 ) 工作表另存为:
ExcelApp.SaveAs( ’C:\Excel\Demo1.xls’ );
22 ) 放弃存盘:
ExcelApp.ActiveWorkBook.Saved : = True;
23 ) 关闭工作簿:
ExcelApp.WorkBooks.Close;
24 ) 退出 Excel:
ExcelApp.Quit;
(二) 使用Delphi 控制Excle二维图
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet
var asheet1,achart, range:variant;
1 )选择当第一个工作薄第一个工作表
asheet1: = ExcelApplication1.Workbooks[ 1 ].Worksheets[ 1 ];
2 )增加一个二维图
achart: = asheet1.chartobjects.add( 100 , 100 , 200 , 200 );
3 )选择二维图的形态
achart.chart.charttype: = 4 ;
4 )给二维图赋值
series: = achart.chart.seriescollection;
range: = sheet1!r2c3:r3c9;
series.add(range,true);
5 )加上二维图的标题
achart.Chart.HasTitle: = True;
achart.Chart.ChartTitle.Characters.Text: = ’ Excle二维图’
6 )改变二维图的标题字体大小
achart.Chart.ChartTitle.Font.size: = 6 ;
7 )给二维图加下标说明
achart.Chart.Axes(xlCategory, xlPrimary).HasTitle : = True;
achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text : = ’下标说明’;
8 )给二维图加左标说明
achart.Chart.Axes(xlvalue, xlPrimary).HasTitle : = True;
achart.Chart.Axes(xlvalue, xlPrimary).AxisTitle.Characters.Text : = ’左标说明’;
9 )给二维图加右标说明
achart.Chart.Axes(xlvalue, xlSecondary).HasTitle : = True;
achart.Chart.Axes(xlvalue, xlSecondary).AxisTitle.Characters.Text : = ’右标说明’;
10 )改变二维图的显示区大小
achart.Chart.PlotArea.Left : = 5 ;
achart.Chart.PlotArea.Width : = 223 ;
achart.Chart.PlotArea.Height : = 108 ;
11 )给二维图坐标轴加上说明
achart.chart.seriescollection[ 1 ].NAME: = ’坐标轴说明’;
关于Excel的智能填充:
ExcelApp.Range[’A1’].value: = 1 ;
ExcelApp.Range[’A2’].value: = 2 ;
ExcelApp.Range[’A1:A1’].AutoFill(ExcelApp.Range[’A1:A9’], 0 ); // 使用智能填充
// 使用方法:源区域.AutoFill(目标区域,填充方式);
对于公式也一样:
ExcelApp.Range[’B1’].value: = 3 ;
ExcelApp.Range[’B2’].value: = 5 ;
ExcelApp.Range[’B1:B2’].AutoFill(ExcelApp.Range[’B1:B9’], 0 );
ExcelApp.Range[’C1’].Formula: = ’ = SUM(A1:B1)’;
// 这里注意公式里含有=号,没有等号就是字符串了
ExcelApp.Range[’C1:C1’].AutoFill(ExcelApp.Range[’C1:C9’], 0 );
有很多类似的问题了。再贴一次吧。
procedure TForm1.Button5Click(Sender: TObject);
var
ExcelApp,MyWorkBook,mysheet:Variant;
i :byte;
s: string ;
begin
try
ExcelApp: = CreateOleObject(’Excel.Application’);
MyWorkBook: = CreateOleobject(’Excel.Sheet’);
// ? MyWorkBook: = ExcelApp.workbooks.open(’C:\Book1.xls’);
except
on Exception do raise exception.Create(’无法打开Xls文件,请确认已 经安装EXCEL’)
end ;
ExcelApp.Visible : = true;
// ? mysheet: = MyWorkBook.WorkSheets[ 1 ].name;
MyworkBook: = ExcelApp.workBooks.Add;
// 在此处插入读数据库及写Excel文档的代码
// 其中写Excel文档的关键语句如下:
Myworkbook.worksheets[ 1 ].range[’A1:D1’].Merge(True);
Myworkbook.worksheets[ 1 ].range[’A1:D2’].HorizontalAlignment : = $FFFFEFF4;
MyWorkBook.WorkSheets[ 1 ].Cells[ 1 , 1 ].value : = ’YourTitle’;
i : = 2 ;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 1 ].value : = ’yourCaption1’;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 2 ].value : = ’yourCaption2’;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 3 ].value : = ’yourCaption3’;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 4 ].value : = ’yourCaption4’;
Myworkbook.worksheets[ 1 ].Range[’A1:D2’].Font.Color : = clBlue;
Myworkbook.worksheets[ 1 ].Range[’A1:D1’].Font.Name : = ’隶书’;
Myworkbook.worksheets[ 1 ].Range[’A1:D1’].Font.Size : = 18 ;
i : = 3 ;
table1.close;
table1.open;
table1.First;
while not table1.eof do begin
MyWorkBook.WorkSheets[ 1 ].Cells[i, 1 ].value : = table1.FieldByName(’au_id’).AsString;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 2 ].value : = table1.FieldByName(’royaltyper’).AsInteger;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 3 ].value : = table1.FieldByName(’au_ord’).AsInteger;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 4 ].value : = table1.FieldByName(’title_id’).AsString;
Inc(i);
table1.Next
end ;
ExcelApp.Visible : = true;
s : = ’A3:D’ + IntToStr(i - 1 );
// 设定字体. 栏宽等
s : = ’A1:D’ + IntToStr(i - 1 );
Myworkbook.worksheets[ 1 ].Columns[ 1 ].ColumnWidth : = 20 ;
Myworkbook.worksheets[ 1 ].Columns[ 4 ].ColumnWidth : = 25 ;
Myworkbook.worksheets[ 1 ].Rows[ 1 ].RowHeight : = 50 ;
Myworkbook.worksheets[ 1 ].Rows[ 1 ].VerticalAlignment : = $FFFFEFF4;
Myworkbook.worksheets[ 1 ].Range[s].Font.Name : = ’仿宋’;
s : = ’A2:D’ + IntToStr(i - 1 );
Myworkbook.worksheets[ 1 ].Range[s].Borders.LineStyle : = 1 ;
// 页面设置
MyworkBook.WorkSheets[ 1 ].PageSetup.CenterHorizontally : = true;
Myworkbook.worksheets[ 1 ].pagesetup.PrintTitleRows : = ’A1’;
// 不能设置 papersize 属性, 原因不明
// MyworkBook.WorkSheets[ 1 ].PageSetup.PaperSize : = $ 9 ;
try
MyWorkBook.saveas(’c:\’ + Edit1.Text + ’.xls’);
MyWorkBook.close;
except // 当存为一个已有的文档而又不覆盖时将
MyWorkBook.close; // 产生一个例外
end ;
ExcelApp.Quit;
ExcelApp: = Unassigned; // 释放VARIANT变量
end ;
首先创建 Excel 对象,使用ComObj:
var ExcelApp: Variant;
ExcelApp : = CreateOleObject( ’Excel.Application’ );
1 ) 显示当前窗口:
ExcelApp.Visible : = True;
2 ) 更改 Excel 标题栏:
ExcelApp.Caption : = ’应用程序调用 Microsoft Excel’;
3 ) 添加新工作簿:
ExcelApp.WorkBooks.Add;
4 ) 打开已存在的工作簿:
ExcelApp.WorkBooks.Open( ’C:\Excel\Demo.xls’ );
5 ) 设置第2个工作表为活动工作表:
ExcelApp.WorkSheets[ 2 ].Activate; 或
ExcelApp.WorksSheets[ ’Sheet2’ ].Activate;
6 ) 给单元格赋值:
ExcelApp.Cells[ 1 , 4 ].value : = ’第一行第四列’;
7 ) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApp.ActiveSheet.Columns[ 1 ].ColumnsWidth : = 5 ;
8 ) 设置指定行的高度(单位:磅)( 1 磅= 0.035 厘米),以第二行为例:
ExcelApp.ActiveSheet.Rows[ 2 ].RowHeight : = 1 / 0.035 ; // 1 厘米
9 ) 在第8行之前插入分页符:
ExcelApp.WorkSheets[ 1 ].Rows[ 8 ].PageBreak : = 1 ;
10 ) 在第8列之前删除分页符:
ExcelApp.ActiveSheet.Columns[ 4 ].PageBreak : = 0 ;
11 ) 指定边框线宽度:
ExcelApp.ActiveSheet.Range[ ’B3:D4’ ].Borders[ 2 ].Weight : = 3 ;
1 - 左 2 - 右 3 - 顶 4 - 底 5 - 斜( \ ) 6 - 斜( / )
12 ) 清除第一行第四列单元格公式:
ExcelApp.ActiveSheet.Cells[ 1 , 4 ].ClearContents;
13 ) 设置第一行字体属性:
ExcelApp.ActiveSheet.Rows[ 1 ].Font.Name : = ’隶书’;
ExcelApp.ActiveSheet.Rows[ 1 ].Font.Color : = clBlue;
ExcelApp.ActiveSheet.Rows[ 1 ].Font.Bold : = True;
ExcelApp.ActiveSheet.Rows[ 1 ].Font.UnderLine : = True;
14 ) 进行页面设置:
a.页眉:
ExcelApp.ActiveSheet.PageSetup.CenterHeader : = ’报表演示’;
b.页脚:
ExcelApp.ActiveSheet.PageSetup.CenterFooter : = ’第 & P页’;
c.页眉到顶端边距2cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin : = 2 / 0.035 ;
d.页脚到底端边距3cm:
ExcelApp.ActiveSheet.PageSetup.HeaderMargin : = 3 / 0.035 ;
e.顶边距2cm:
ExcelApp.ActiveSheet.PageSetup.TopMargin : = 2 / 0.035 ;
f.底边距2cm:
ExcelApp.ActiveSheet.PageSetup.BottomMargin : = 2 / 0.035 ;
g.左边距2cm:
ExcelApp.ActiveSheet.PageSetup.LeftMargin : = 2 / 0.035 ;
h.右边距2cm:
ExcelApp.ActiveSheet.PageSetup.RightMargin : = 2 / 0.035 ;
i.页面水平居中:
ExcelApp.ActiveSheet.PageSetup.CenterHorizontally : = 2 / 0.035 ;
j.页面垂直居中:
ExcelApp.ActiveSheet.PageSetup.CenterVertically : = 2 / 0.035 ;
k.打印单元格网线:
ExcelApp.ActiveSheet.PageSetup.PrintGridLines : = True;
15 ) 拷贝操作:
a.拷贝整个工作表:
ExcelApp.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:
ExcelApp.ActiveSheet.Range[ ’A1:E2’ ].Copy;
c.从A1位置开始粘贴:
ExcelApp.ActiveSheet.Range.[ ’A1’ ].PasteSpecial;
d.从文件尾部开始粘贴:
ExcelApp.ActiveSheet.Range.PasteSpecial;
16 ) 插入一行或一列:
a. ExcelApp.ActiveSheet.Rows[ 2 ].Insert;
b. ExcelApp.ActiveSheet.Columns[ 1 ].Insert;
17 ) 删除一行或一列:
a. ExcelApp.ActiveSheet.Rows[ 2 ].Delete;
b. ExcelApp.ActiveSheet.Columns[ 1 ].Delete;
18 ) 打印预览工作表:
ExcelApp.ActiveSheet.PrintPreview;
19 ) 打印输出工作表:
ExcelApp.ActiveSheet.PrintOut;
20 ) 工作表保存:
if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveSheet.PrintPreview;
21 ) 工作表另存为:
ExcelApp.SaveAs( ’C:\Excel\Demo1.xls’ );
22 ) 放弃存盘:
ExcelApp.ActiveWorkBook.Saved : = True;
23 ) 关闭工作簿:
ExcelApp.WorkBooks.Close;
24 ) 退出 Excel:
ExcelApp.Quit;
(二) 使用Delphi 控制Excle二维图
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet
var asheet1,achart, range:variant;
1 )选择当第一个工作薄第一个工作表
asheet1: = ExcelApplication1.Workbooks[ 1 ].Worksheets[ 1 ];
2 )增加一个二维图
achart: = asheet1.chartobjects.add( 100 , 100 , 200 , 200 );
3 )选择二维图的形态
achart.chart.charttype: = 4 ;
4 )给二维图赋值
series: = achart.chart.seriescollection;
range: = sheet1!r2c3:r3c9;
series.add(range,true);
5 )加上二维图的标题
achart.Chart.HasTitle: = True;
achart.Chart.ChartTitle.Characters.Text: = ’ Excle二维图’
6 )改变二维图的标题字体大小
achart.Chart.ChartTitle.Font.size: = 6 ;
7 )给二维图加下标说明
achart.Chart.Axes(xlCategory, xlPrimary).HasTitle : = True;
achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text : = ’下标说明’;
8 )给二维图加左标说明
achart.Chart.Axes(xlvalue, xlPrimary).HasTitle : = True;
achart.Chart.Axes(xlvalue, xlPrimary).AxisTitle.Characters.Text : = ’左标说明’;
9 )给二维图加右标说明
achart.Chart.Axes(xlvalue, xlSecondary).HasTitle : = True;
achart.Chart.Axes(xlvalue, xlSecondary).AxisTitle.Characters.Text : = ’右标说明’;
10 )改变二维图的显示区大小
achart.Chart.PlotArea.Left : = 5 ;
achart.Chart.PlotArea.Width : = 223 ;
achart.Chart.PlotArea.Height : = 108 ;
11 )给二维图坐标轴加上说明
achart.chart.seriescollection[ 1 ].NAME: = ’坐标轴说明’;
关于Excel的智能填充:
ExcelApp.Range[’A1’].value: = 1 ;
ExcelApp.Range[’A2’].value: = 2 ;
ExcelApp.Range[’A1:A1’].AutoFill(ExcelApp.Range[’A1:A9’], 0 ); // 使用智能填充
// 使用方法:源区域.AutoFill(目标区域,填充方式);
对于公式也一样:
ExcelApp.Range[’B1’].value: = 3 ;
ExcelApp.Range[’B2’].value: = 5 ;
ExcelApp.Range[’B1:B2’].AutoFill(ExcelApp.Range[’B1:B9’], 0 );
ExcelApp.Range[’C1’].Formula: = ’ = SUM(A1:B1)’;
// 这里注意公式里含有=号,没有等号就是字符串了
ExcelApp.Range[’C1:C1’].AutoFill(ExcelApp.Range[’C1:C9’], 0 );
有很多类似的问题了。再贴一次吧。
procedure TForm1.Button5Click(Sender: TObject);
var
ExcelApp,MyWorkBook,mysheet:Variant;
i :byte;
s: string ;
begin
try
ExcelApp: = CreateOleObject(’Excel.Application’);
MyWorkBook: = CreateOleobject(’Excel.Sheet’);
// ? MyWorkBook: = ExcelApp.workbooks.open(’C:\Book1.xls’);
except
on Exception do raise exception.Create(’无法打开Xls文件,请确认已 经安装EXCEL’)
end ;
ExcelApp.Visible : = true;
// ? mysheet: = MyWorkBook.WorkSheets[ 1 ].name;
MyworkBook: = ExcelApp.workBooks.Add;
// 在此处插入读数据库及写Excel文档的代码
// 其中写Excel文档的关键语句如下:
Myworkbook.worksheets[ 1 ].range[’A1:D1’].Merge(True);
Myworkbook.worksheets[ 1 ].range[’A1:D2’].HorizontalAlignment : = $FFFFEFF4;
MyWorkBook.WorkSheets[ 1 ].Cells[ 1 , 1 ].value : = ’YourTitle’;
i : = 2 ;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 1 ].value : = ’yourCaption1’;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 2 ].value : = ’yourCaption2’;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 3 ].value : = ’yourCaption3’;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 4 ].value : = ’yourCaption4’;
Myworkbook.worksheets[ 1 ].Range[’A1:D2’].Font.Color : = clBlue;
Myworkbook.worksheets[ 1 ].Range[’A1:D1’].Font.Name : = ’隶书’;
Myworkbook.worksheets[ 1 ].Range[’A1:D1’].Font.Size : = 18 ;
i : = 3 ;
table1.close;
table1.open;
table1.First;
while not table1.eof do begin
MyWorkBook.WorkSheets[ 1 ].Cells[i, 1 ].value : = table1.FieldByName(’au_id’).AsString;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 2 ].value : = table1.FieldByName(’royaltyper’).AsInteger;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 3 ].value : = table1.FieldByName(’au_ord’).AsInteger;
MyWorkBook.WorkSheets[ 1 ].Cells[i, 4 ].value : = table1.FieldByName(’title_id’).AsString;
Inc(i);
table1.Next
end ;
ExcelApp.Visible : = true;
s : = ’A3:D’ + IntToStr(i - 1 );
// 设定字体. 栏宽等
s : = ’A1:D’ + IntToStr(i - 1 );
Myworkbook.worksheets[ 1 ].Columns[ 1 ].ColumnWidth : = 20 ;
Myworkbook.worksheets[ 1 ].Columns[ 4 ].ColumnWidth : = 25 ;
Myworkbook.worksheets[ 1 ].Rows[ 1 ].RowHeight : = 50 ;
Myworkbook.worksheets[ 1 ].Rows[ 1 ].VerticalAlignment : = $FFFFEFF4;
Myworkbook.worksheets[ 1 ].Range[s].Font.Name : = ’仿宋’;
s : = ’A2:D’ + IntToStr(i - 1 );
Myworkbook.worksheets[ 1 ].Range[s].Borders.LineStyle : = 1 ;
// 页面设置
MyworkBook.WorkSheets[ 1 ].PageSetup.CenterHorizontally : = true;
Myworkbook.worksheets[ 1 ].pagesetup.PrintTitleRows : = ’A1’;
// 不能设置 papersize 属性, 原因不明
// MyworkBook.WorkSheets[ 1 ].PageSetup.PaperSize : = $ 9 ;
try
MyWorkBook.saveas(’c:\’ + Edit1.Text + ’.xls’);
MyWorkBook.close;
except // 当存为一个已有的文档而又不覆盖时将
MyWorkBook.close; // 产生一个例外
end ;
ExcelApp.Quit;
ExcelApp: = Unassigned; // 释放VARIANT变量
end ;