Delphi中Excel操作

2016-08-22 10:19:22来源:http://science.blog.51cto.com/1396632/288213作者:sunnyzjj人点击


(一)使用动态创建的方法

首先创建Excel对象,使用ComObj:
varExcelApp:Variant;
ExcelApp:=CreateOleObject('Excel.Application');

1)显示当前窗口:
ExcelApp.Visible:=True;

2)更改Excel标题栏:
ExcelApp.Caption:='应用程序调用MicrosoftExcel';

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)工作表保存:
ifnotExcelApp.ActiveWorkBook.Savedthen
ExcelApp.ActiveSheet.PrintPreview;

21)工作表另存为:
ExcelApp.SaveAs('C:/Excel/Demo1.xls');

22)放弃存盘:
ExcelApp.ActiveWorkBook.Saved:=True;

23)关闭工作簿:
ExcelApp.WorkBooks.Close;

24)退出Excel:
ExcelApp.Quit;

(二)使用Delphi控件方法
在Form中分别放入ExcelApplication,ExcelWorkbook和ExcelWorksheet。

1)打开Excel
ExcelApplication1.Connect;

2)显示当前窗口:
ExcelApplication1.Visible[0]:=True;

3)更改Excel标题栏:
ExcelApplication1.Caption:='应用程序调用MicrosoftExcel';

4)添加新工作簿:
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));

5)添加新工作表:
varTemp_Worksheet:_WorkSheet;
begin
Temp_Worksheet:=ExcelWorkbook1.
WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)as_WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
End;

6)打开已存在的工作簿:
ExcelApplication1.Workbooks.Open(c:/a.xls
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)

7)设置第2个工作表为活动工作表:
ExcelApplication1.WorkSheets[2].Activate; 或
ExcelApplication1.WorksSheets['Sheet2'].Activate;

8)给单元格赋值:
ExcelApplication1.Cells[1,4].Value:='第一行第四列';

9)设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth:=5;

10)设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelApplication1.ActiveSheet.Rows[2].RowHeight:=1/0.035;//1厘米

11)在第8行之前插入分页符:
ExcelApplication1.WorkSheets[1].Rows[8].PageBreak:=1;

12)在第8列之前删除分页符:
ExcelApplication1.ActiveSheet.Columns[4].PageBreak:=0;

13)指定边框线宽度:
ExcelApplication1.ActiveSheet.Range['B3:D4'].Borders[2].Weight:=3;
1-左 2-右3-顶 4-底5-斜(/)6-斜(/)

14)清除第一行第四列单元格公式:
ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;

15)设置第一行字体属性:
ExcelApplication1.ActiveSheet.Rows[1].Font.Name:='隶书';
ExcelApplication1.ActiveSheet.Rows[1].Font.Color :=clBlue;
ExcelApplication1.ActiveSheet.Rows[1].Font.Bold:=True;
ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine:=True;

16)进行页面设置:
a.页眉:
ExcelApplication1.ActiveSheet.PageSetup.CenterHeader:='报表演示';
b.页脚:
ExcelApplication1.ActiveSheet.PageSetup.CenterFooter:='第&P页';
c.页眉到顶端边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin:=2/0.035;
d.页脚到底端边距3cm:
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin:=3/0.035;
e.顶边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.TopMargin:=2/0.035;
f.底边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.BottomMargin:=2/0.035;
g.左边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.LeftMargin:=2/0.035;
h.右边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.RightMargin:=2/0.035;
i.页面水平居中:
ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally:=2/0.035;
j.页面垂直居中:
ExcelApplication1.ActiveSheet.PageSetup.CenterVertically:=2/0.035;
k.打印单元格网线:
ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines:=True;

17)拷贝操作:

a.拷贝整个工作表:
ExcelApplication1.ActiveSheet.Used.Range.Copy;

b.拷贝指定区域:
ExcelApplication1.ActiveSheet.Range['A1:E2'].Copy;

c.从A1位置开始粘贴:
ExcelApplication1.ActiveSheet.Range.['A1'].PasteSpecial;

d.从文件尾部开始粘贴:
ExcelApplication1.ActiveSheet.Range.PasteSpecial;

18)插入一行或一列:
a.ExcelApplication1.ActiveSheet.Rows[2].Insert;
b.ExcelApplication1.ActiveSheet.Columns[1].Insert;

19)删除一行或一列:
a.ExcelApplication1.ActiveSheet.Rows[2].Delete;
b.ExcelApplication1.ActiveSheet.Columns[1].Delete;

20)打印预览工作表:
ExcelApplication1.ActiveSheet.PrintPreview;

21)打印输出工作表:
ExcelApplication1.ActiveSheet.PrintOut;

22)工作表保存:
ifnotExcelApplication1.ActiveWorkBook.Savedthen
ExcelApplication1.ActiveSheet.PrintPreview;

23)工作表另存为:
ExcelApplication1.SaveAs('C:/Excel/Demo1.xls');

24)放弃存盘:
ExcelApplication1.ActiveWorkBook.Saved:=True;

25)关闭工作簿:
ExcelApplication1.WorkBooks.Close;

26)退出Excel:
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;

(三)使用Delphi控制Excel二维图
在Form中分别放入ExcelApplication,ExcelWorkbook和ExcelWorksheet
varasheet1,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:=’Ex




最近用delphi写一个查询数据库并自动生成excel报表的工具,发现网上很多关于delphi操作excel的介绍都是不正确的。下面就介绍一下在delphi 7中操作excel的一些基本方法:
把TExcelApplication,TExcelWorksheet,TExcelWorkbook拉到窗体上。
1.取得与excel引擎的连接
try
ExcelApplication1.Connect;
except
on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL');
end;
ExcelApplication1.Visible[1]:=true; //是否显示excel
2.取得所有打开的excel文件
for i:=1 to ExcelApplication1.Workbooks.Count do
begin
workbooks.Add(ExcelApplication1.Workbooks[i].Name);
end;
3.打开或新建工作薄
//连接指定路径下的excel文件
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(path,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0));
//连接已经打开的excel
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[i]);
//新建一个工作薄
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
4.连接或新建表单
//新建表单
Temp_Worksheet:=ExcelWorkbook1.Worksheets.Add(EmptyParam,ExcelWorkbook1.Worksheets [3],EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorksheet1.ConnectTo(Temp_Worksheet);
ExcelWorksheet1.Name:='abc' //更改表单的名字
//连接已存在的表单
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
5.对相应的单元格操作
ExcelWorksheet1.Cells.Item[1,1]:='abc' //对a1负值
ExcelWorksheet1.Range['a1','b1'].Merge(true); //水平合并单元格,false时为垂直合并
ExcelWorksheet1.Range['a1','b1'].HorizontalAlignment:=xlcenter;//水平居中
ExcelWorksheet1.Cells.Item[1,1].borders[5].LineStyle:=1;//画边框,1-左2-右3-顶4-底5-斜(/)6-斜(/)
ExcelWorksheet1.Cells.Item[1,1].borders.LineStyle:=1;//画上下左右的边框
ExcelWorksheet1.Range['b1','d1'].Interior.Color:=rgb(255,0,0); //背景颜色
ExcelWorksheet1.Cells.Item[1,1].WrapText:=true; //自动换行
ExcelWorksheet1.Cells.Item[1,1].ColumnWidth:=15; //设置宽度
ExcelWorksheet1.Cells.Item[1,2].EntireColumn.insert(emptyparam);//插入列
ExcelWorksheet1.Cells.Item[2,1].EntireRow.insert(emptyparam); //插入行
6.保存并退出
ExcelApplication1.DisplayAlerts[LCID]:=false; //不提示保存,true时会提示保存
{for i:=1 to ExcelApplication1.Workbooks.Count do
begin
Excelapplication1.Workbooks[i].Save(LCID); //保存
end;}
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;

以上列举了一些对excel的基本操作。当然delphi对excel的操作很多,基本上在excel上手工可以做的操作,利用delphi也可以操作,例如:设置边框线条、线条宽度、字体、打印、使用excel函数等。望对刚开始使用这些控件的人有所帮助。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台