用delphi操作excel

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

首先创建 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].ColumnWidth := 5;

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

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

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

11) 指定边框线宽度:
ExcelApp.ActiveSheet.Range[ 'B34' ].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.FooterMargin := 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;

补充:
设置打印方向:BExcelApp.ActiveSheet.PageSetup.Orientation := 2;
1:纵向,2横向

设置单元格边框:FExcel.Selection.Borders[2].LineStyle := 0;
值:0-有,1-无。位置:1-左, 2-右,3-上,4-下,5-中竖,6中横
设置纸张大小:还有问题
VExcelApp.ActiveSheet.PageSetup.PaperSize := 12; //9--A4,8--A3,12--B4,13--B5

VExcelApp.Selection.HorizontalAlignment := '3';//xlCenter 1--常规、2--靠左、3--居中、4--靠右

VExcelApp.Selection.VerticalAlignment := '1';

修改列类型:FExcel.Columns[8].NumberFormatLocal := '@';//"@"字符型,"yyyy-mm-dd"日期型,"h:mm:ss"时间型,"0.00%"百分数,"G/通用格式"常规类型,
"0.00_ ;[红色]-0.00 "数值型,"¥#,##0.00;[红色]¥-#,##0.00"货币型,"# ?/?"分数。
自动换行: FExcel.Selection.WrapText := True;
设置字体
FExcel.Cells.Select;
FExcel.Selection.Font.Size := AFont.Size;
FExcel.Selection.Font.Name := AFont.Name;
设置列宽:
FExcel.Columns[AColumnNo].ColumnWidth := AColumnWith;

设置页眉:
1: FExcel.ActiveSheet.PageSetup.LeftHeader := APageHander;
2: FExcel.ActiveSheet.PageSetup.CenterHeader := APageHander;
3: FExcel.ActiveSheet.PageSetup.RightHeader := APageHander;
设置页脚:
1: FExcel.ActiveSheet.PageSetup.LeftFooter := APageFooter;
2: FExcel.ActiveSheet.PageSetup.CenterFooter := APageFooter;
3: FExcel.ActiveSheet.PageSetup.RightFooter := APageFooter;

遍历分页符:
for VIndex := 1 to FExcel.ActiveSheet.HPageBreaks.Count do
if FExcel.ActiveSheet.HPageBreaks.Item[VIndex].Location.Row = ARow + 1 then
begin
SetPageFlooter('工时小计:' + IntToStr(ASubTotal), 1);
ASubTotal := 0;
Result := True;
Exit;
end;

设置打印某几页:
ActiveWindow.SelectedSheets.PrintOut From:=Flag, To:=Flag, Copies:=1, Collate :=True

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

1) 打开Excel
ExcelApplication1.Connect;

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

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

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

5) 添加新工作表:
var Temp_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.PageBreak := 1;

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

13) 指定边框线宽度:
ExcelApplication1.ActiveSheet.Range[ 'B34' ].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) 工作表保存:
if not ExcelApplication1.ActiveWorkBook.Saved then
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 控制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:='坐标轴说明';

用delphi操作excel相关推荐

  1. delphi 操作excel(全)

    DELPHI中EXCEL组件的使用方法: (一) 使用动态创建的方法 首先创建 Excel 对象,使用ComObj:     var ExcelApp: Variant;     ExcelApp : ...

  2. Delphi操作Excel大全

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 转自  上帝的鱼- ...

  3. delphi 操作Excel插入图片

    看如下的代码: function ExportExcelForBmp(sfilepath : string) : Boolean; var     excel : OleVariant;     wo ...

  4. delphi操作excel分组

    调用宏语言: excelapp := createoleobject('EXCEL.application');   ExBook := excelapp.WorkBooks.Add;   Sheet ...

  5. Delphi 操作EXCEL折线图

    //1.增加一个二维图chartobjects.add(Left, Top, 宽,高) chart1 := xlssheet1.chartObjects.Add(l_left,l_top,l_Widt ...

  6. Delphi操作Word,Excel替换

    有的时候想把数据库里的内容按某种格式写在Word,Excel里,在Word,Excel里按某种格式保存字段名称,下面以"%+字段名称+%"为例 一.Delphi 操作 Word 替 ...

  7. Delphi 如何操作Excel

    Delphi 如何操作Excel 摘自:http://wenjieshiyu.blog.163.com/blog/static/10739413201072033115869/ 个人收藏: Delph ...

  8. 学完这个你就成为excel高手了!(Delphi对Excel的所有操作)逐个试试!

    学完这个你就成为excel高手了!(Delphi对Excel的所有操作)逐个试试!   一) 使用动态创建的方法  首先创建 Excel 对象,使用ComObj:  var ExcelApp: Var ...

  9. Delphi OLE方法操作Excel

    Delphi OLE方法操作Excel  来源:http://www.ltesting.net/ceshi/ruanjianceshikaifajishu/rjcskfyy/2008/0519/154 ...

最新文章

  1. Testing AJAX Applications with VSTS 2008
  2. IT人士,你的知识需要管理。
  3. Vue安装npm长时间停留WARN deprecated request@2.88.2: request has been deprecated
  4. 明天要中秋节了,先来到简单“类”的题目
  5. C++表白代码--Beating heart
  6. 【codeforces 709C】Letters Cyclic Shift
  7. 关于《趣谈网络协议》的读书笔记
  8. 联想E430c:To interrupt normal starup,press enter问题解决方法
  9. 让 CPU 告诉你硬盘和网络到底有多慢 1
  10. mysql mariadb libs_mysql 安装 【解决】mariadb-libs is obsoleted by *** - Ctrl+CCtrl+V - ITeye博客...
  11. android root测试,android检测是否已经具有root权限
  12. 两个服务器微信消息模板发不出去,小程序模板消息调用send大部分情况下发送不出去,但有时又可以发送,什么情况?...
  13. 增量式编码器 绝对值编码器
  14. 《微信公众平台应用开发实战(第2版)》一1.1 微信公众账号的注册
  15. arcgis小班编号问题 工具箱来喽
  16. 超市销售数据分析python_python实战案例:超市营业额数据分析
  17. 理工男博士买房记:按照科学原理去爱,没哪个妹子能招架得了
  18. Silverlight教程第五部分:用 ListBox 和 DataBinding 显示列表数据 (木野狐译)
  19. 《北京DRGs系统的研究与应用》学习笔记
  20. 基于Webrtc的多人视频会议的简单实现

热门文章

  1. mysql5.6 主从同步
  2. DevExpress XtraTreeList的复选框 禁用
  3. NetScaler配置只允许某个组访问桌面
  4. shell-脚本入门【转】
  5. quot;数据结构翻转课堂quot;答疑实录——链表
  6. android 应用选择器的使用
  7. Linux 安装和卸载JDK
  8. linux下给源码安装好的php支持pdo_mysql
  9. 数据库设计系列[04]组织结构加入权限系统
  10. 转载:LOG_ARCHIVE_DEST_n参数属性——DATA GUARD概念和管理