1、Delphi 对 Excel 的所有操作学完这个你就成为 excel 高手了!(Delphi 对 Excel 的所有操作)逐个试试!一) 使用动态创建的方法 首先创建 Excel 对象,使用 ComObj: var ExcelApp: Variant; ExcelApp := CreateOleObject( Excel.Application ); 1) 显示当前窗口: ExcelApp.Visible := True; 2) 更改 Excel 标题栏: ExcelApp.Caption := 应用程序调用 Microsoft Excel; 3) 添加新工作簿: ExcelApp.WorkB
2、ooks.Add; 4) 打开已存在的工作簿: ExcelApp.WorkBooks.Open( C:ExcelDemo.xls ); 5) 设置第 2 个工作表为活动工作表: ExcelApp.WorkSheets2.Activate; 或 ExcelApp.WorksSheets Sheet2 .Activate; 6) 给单元格赋值: ExcelApp.Cells1,4.Value := 第一行第四列; 7) 设置指定列的宽度(单位:字符个数) ,以第一列为例: ExcelApp.ActiveSheet.Columns1.ColumnsWidth := 5; 8) 设置指定行的高度(单位
3、:磅) (1 磅0.035 厘米) ,以第二行为例: ExcelApp.ActiveSheet.Rows2.RowHeight := 1/0.035; / 1 厘米 9) 在第 8 行之前插入分页符: ExcelApp.WorkSheets1.Rows.PageBreak := 1; 10) 在第 8 列之前删除分页符: ExcelApp.ActiveSheet.Columns4.PageBreak := 0; 11) 指定边框线宽度: ExcelApp.ActiveSheet.Range B3:D4 .Borders2.Weight := 3; 1-左 2-右 3-顶 4-底 5-斜( )
4、6-斜( / ) 12) 清除第一行第四列单元格公式: ExcelApp.ActiveSheet.Cells1,4.ClearContents; 13) 设置第一行字体属性: ExcelApp.ActiveSheet.Rows1.Font.Name := 隶书; ExcelApp.ActiveSheet.Rows1.Font.Color := clBlue; ExcelApp.ActiveSheet.Rows1.Font.Bold := True; ExcelApp.ActiveSheet.Rows1.Font.UnderLine := True; 14) 进行页面设置: a.页眉: Exce
5、lApp.ActiveSheet.PageSetup.CenterHeader := 报表演示; b.页脚: ExcelApp.ActiveSheet.PageSetup.CenterFooter := 第 c.页眉到顶端边距 2cm: ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.页脚到底端边距 3cm: ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.顶边距 2cm: ExcelApp.ActiveSheet.PageSetup.TopMargin :=
6、 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.A
7、ctiveSheet.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.从文件尾部开始粘贴: E
8、xcelApp.ActiveSheet.Range.PasteSpecial; 16) 插入一行或一列: a. ExcelApp.ActiveSheet.Rows2.Insert; b. ExcelApp.ActiveSheet.Columns1.Insert; 17) 删除一行或一列: a. ExcelApp.ActiveSheet.Rows2.Delete; b. ExcelApp.ActiveSheet.Columns1.Delete; 18) 打印预览工作表: ExcelApp.ActiveSheet.PrintPreview; 19) 打印输出工作表: ExcelApp.Active
9、Sheet.PrintOut; 20) 工作表保存: if not ExcelApp.ActiveWorkBook.Saved then ExcelApp.ActiveSheet.PrintPreview; 21) 工作表另存为: ExcelApp.SaveAs( C:ExcelDemo1.xls ); 22) 放弃存盘: ExcelApp.ActiveWorkBook.Saved := True; 23) 关闭工作簿: ExcelApp.WorkBooks.Close; 24) 退出 Excel: ExcelApp.Quit; (二 ) 使用 Delphi 控件方法 在 Form 中分别放入
10、 ExcelApplication, ExcelWorkbook 和ExcelWorksheet。 1) 打开 Excel ExcelApplication1.Connect; 2) 显示当前窗口: ExcelApplication1.Visible0:=True; 3) 更改 Excel 标题栏: ExcelApplication1.Caption := 应用程序调用 Microsoft Excel; 4) 添加新工作簿: ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0); 5) 添加新工作表: va
11、r 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, EmptyPa
12、ram,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 7) 设置第 2 个工作表为活动工作表: ExcelApplication1.WorkSheets2.Activate; 或 ExcelApplication1.WorksSheets Sheet2 .Activate; 8) 给单元格赋值: ExcelApplication1.Cells1,4.Value := 第一行第四列; 9) 设置指定列的宽度(单位:字符个数) ,以第一列为例: ExcelApplication1.A
13、ctiveSheet.Columns1.ColumnsWidth := 5; 10) 设置指定行的高度(单位:磅) (1 磅0.035 厘米) ,以第二行为例: ExcelApplication1.ActiveSheet.Rows2.RowHeight := 1/0.035; / 1厘米 11) 在第 8 行之前插入分页符: ExcelApplication1.WorkSheets1.Rows.PageBreak := 1; 12) 在第 8 列之前删除分页符: ExcelApplication1.ActiveSheet.Columns4.PageBreak := 0; 13) 指定边框线宽度
14、: ExcelApplication1.ActiveSheet.Range B3:D4 .Borders2.Weight:= 3; 1-左 2-右 3-顶 4-底 5-斜( ) 6-斜( / ) 14) 清除第一行第四列单元格公式: ExcelApplication1.ActiveSheet.Cells1,4.ClearContents; 15) 设置第一行字体属性: ExcelApplication1.ActiveSheet.Rows1.Font.Name := 隶书; ExcelApplication1.ActiveSheet.Rows1.Font.Color := clBlue; Exc
15、elApplication1.ActiveSheet.Rows1.Font.Bold := True; ExcelApplication1.ActiveSheet.Rows1.Font.UnderLine := True; 16) 进行页面设置: a.页眉: ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := 报表演示; b.页脚: ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := 第 c.页眉到顶端边距 2cm: ExcelApplication1.ActiveSheet
16、.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.ActiveShe
17、et.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.
18、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.PasteSpe
19、cial; 18) 插入一行或一列: a. ExcelApplication1.ActiveSheet.Rows2.Insert; b. ExcelApplication1.ActiveSheet.Columns1.Insert; 19) 删除一行或一列: a. ExcelApplication1.ActiveSheet.Rows2.Delete; b. ExcelApplication1.ActiveSheet.Columns1.Delete; 20) 打印预览工作表: ExcelApplication1.ActiveSheet.PrintPreview; 21) 打印输出工作表: Exce
20、lApplication1.ActiveSheet.PrintOut; 22) 工作表保存: if not ExcelApplication1.ActiveWorkBook.Saved then ExcelApplication1.ActiveSheet.PrintPreview; 23) 工作表另存为: ExcelApplication1.SaveAs( C:ExcelDemo1.xls ); 24) 放弃存盘: ExcelApplication1.ActiveWorkBook.Saved := True; 25) 关闭工作簿: ExcelApplication1.WorkBooks.Clo
21、se; 26) 退出 Excel: ExcelApplication1.Quit; ExcelApplication1.Disconnect; (三) 使用 Delphi 控制 Excle 二维图 在 Form 中分别放入 ExcelApplication, ExcelWorkbook 和 ExcelWorksheet var asheet1,achart, range:variant; 1)选择当第一个工作薄第一个工作表 asheet1:=ExcelApplication1.Workbooks1.Worksheets1; 2)增加一个二维图 achart:=asheet1.chartobje
22、cts.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 二维图学完这个你就成为 excel 高手了! Interface Uses Windows,Messa
23、ges,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComObj, ComObj 是操作 OLE 对象的函数集 Type TForm1=class(TForm) Button1:TButton; Procedure Button1Click(Sender:Tobject); Private Private declaration Public Public declaration end; var Form1:Tform1; Implementation $R *.DFM procedure TForm1.Button1C
24、lick(sender:Tobject); var eclApp,WordBook:Variant; 声明为 OLE Automation 对象 xlsFileName:string; begin xlsFileName:=ex.xls; try 创建 OLE 对象: Excel Application 与 WordBook eclApp:=CreateOleObject(Excel.Application); WorkBook:=CreateOleObject(Excel.Sheet); Except Application.MessageBox(你的机器没有安装 Microsoft Exc
25、el, 使用 Microsoft Excel,MB_OK+MB_ICONWarning); Exit; End; Try ShowMessage(下面演示:新建一个 XLS 文件,并写入数据,并关闭它。 ); WorkBook:=eclApp.workbooks.Add; EclApp.Cells(1,1):=字符型; EclApp.Cells(2,1):=Excel 文件; EclApp.Cells(1,2):=Money; EclApp.Cells(2,2):=10.01; EclApp.Cells(1,3):=日期型; EclApp.Cells(2,3):=Date; WorkBook.
26、SaveAS(xlsFileName); WorkBook.close; ShowMessage(下面演示:打开刚创建的 XLS 文件,并修改其中的内容,然后,由用户决定是否保存。 ); Workbook:=eclApp.WorkBooks.Open(xlsFileName); EclApp.Cells(1,4):=Excel 文件类型; If MessageDlg(xlsFileName+已经被修改,是否保存?, mtConfirmation,mbYes,mbNo,0)=mrYes then WorkBook.Save Else WorkBook.Saved:=True; 放弃保存 Work
27、book.Close; EclApp.Quit; /退出 Excel Application 释放 Variant 变量 eclApp:=Unassigned; except showMessage(不能正确操作 Excel 文件。可能是该文件已被其他程序打开,或系统错误。 ); WorkBook.close; EclApp.Quit; 释放 Variant 变量 eclApp:=Unassigned; end; end; end - 一个操作 Excel 的单元 这里给出一个 Excel 的操作单元,函概了部分常用 Excel 操作,不是我写的,是从Experts-Exchange 看到后收
28、藏起来的,给大家参考。 / 该文件操作单元封装了大部分的 Excel 操作 / use to manipulate Excel xls File / Dragon P.C. 2000.05.10 unit ExcelUnit; interface uses Dialogs, Messages, SysUtils, Grids, Cmp_Sec, ComObj, Ads_Misc; !Add a blank WorkSheet Function ExcelAddWorkSheet(Excel : Variant): Boolean; !Close Excel Function ExcelClos
29、e(Excel : Variant; SaveAll: Boolean): Boolean;!Returns the Column String Value from its integer equilavent.Function ExcelColIntToStr(ColNum: Integer): ShortString; !Returns the Column Integer Value from its Alpha equilavent. Function ExcelColStrToInt(ColStr: ShortString): Integer; !Close All Workboo
30、ks. All workbooks can be saved or not. Function ExcelCloseWorkBooks(Excel : Variant; SaveAll: Boolean):Boolean; !Copies a range of Excel Cells to a Delphi StringGrid. If successful True is returned, False otherwise. If SizeStringGridToFit is True then the StringGrid is resized to be exactly the corr
31、ect dimensions to receive the input Excel cells, otherwise the StringGrid is not resized. If ClearStringGridFirst is true then any cells outside the inputrange are cleared, otherwise existing values are retained. Please not that the Excel cell coordinates are “1“ based and the Delphi StringGrid coor
32、dinates are zero based. Function ExcelCopyToStringGrid( Excel : Variant; ExcelFirstRow : Integer; ExcelFirstCol : Integer; ExcelLastRow : Integer; ExcelLastCol : Integer; StringGrid : TStringGrid; StringGridFirstRow : Integer; StringGridFirstCol : Integer; Make the StringGrid the same size as the in
33、put range SizeStringGridToFit : Boolean; cells outside input range in StringGrid are cleared ClearStringGridFirst : Boolean ): Boolean; !Delete a WorkSheet by Name Function ExcelDeleteWorkSheet( Excel : Variant; SheetName : ShortString): Boolean; !Moves the cursor to the last row and column Function
34、 ExcelEnd(Excel : Variant): Boolean; !Finds A value and moves the cursor there. If the value is not found then the cursor does not move. If nothing is found then false is returned, True otherwise. Function ExcelFind( Excel : Variant; FindString : ShortString): Boolean; !Finds A value in a range and
35、moves the cursor there. If the value is not found then the cursor does not move. If nothing is found then false is returned, True otherwise. Function ExcelFindInRange( Excel : Variant; FindString : ShortString; TopRow : Integer; LeftCol : Integer; LastRow : Integer; LastCol : Integer): Boolean; !Fin
36、ds A value in a range and moves the cursor there. If the value is not found then the cursor does not move. If nothing is found then false is returned, True otherwise. The search directions can be defined. If you want row searches to go from left to right then SearchRight should be set to true, False
37、 otherwise. If you want column searches to go from top to bottom then SearchDown should be set to true, false otherwise. If RowsFirst is set to true then all the columns in a complete row will be searched. Function ExcelFindValue( Excel : Variant; FindString : ShortString; TopRow : Integer; LeftCol
38、: Integer; LastRow : Integer; LastCol : Integer; SearchRight : Boolean; SearchDown : Boolean; RowsFirst : Boolean ): Boolean; !Returns The First Col Function ExcelFirstCol(Excel : Variant): Integer; !Returns The First Row Function ExcelFirstRow(Excel : Variant): Integer; !Returns the name of the cur
39、rently active worksheet as a shortstring Function ExcelGetActiveSheetName(Excel : Variant): ShortString; !Gets the formula in a cell. Function ExcelGetCellFormula( Excel : Variant; RowNum, ColNum: Integer): ShortString; !Returns the contents of a cell as a shortstring Function ExcelGetCellValue(Exce
40、l : Variant; RowNum, ColNum: Integer): ShortString; !Returns the the current column Function ExcelGetCol(Excel : Variant): Integer; !Returns the the current row Function ExcelGetRow(Excel : Variant): Integer; !Moves the cursor to the last column Function ExcelGoToLastCol(Excel : Variant): Boolean; !
41、Moves the cursor to the last row Function ExcelGoToLastRow(Excel : Variant): Boolean; !Moves the cursor to the Leftmost Column Function ExcelGoToLeftmostCol(Excel : Variant): Boolean; !Moves the cursor to the Top row Function ExcelGoToTopRow(Excel : Variant): Boolean; !Moves the cursor to Home posit
42、ion, i.e., A1 Function ExcelHome(Excel : Variant): Boolean; !Returns The Last Column Function ExcelLastCol(Excel : Variant): Integer; !Returns The Last Row Function ExcelLastRow(Excel : Variant): Integer; !Open the file you want to work within Excel. If you want to take advantage of optional paramet
43、ers then you should use ExcelOpenFileComplex Function ExcelOpenFile(Excel : Variant; FileName : String): Boolean; !Open the file you want to work within Excel. If you want to take advantage of optional parameters then you should use ExcelOpenFileComplex Function ExcelOpenFileComplex( Excel : Variant
44、; FileName : String; UpdateLinks : Integer; ReadOnly : Boolean; Format : Integer; Password : ShortString): Boolean; !Saves the range on the currently active sheet to to values only. Function ExcelPasteValuesOnly( Excel : Variant; ExcelFirstRow : Integer; ExcelFirstCol : Integer; ExcelLastRow : Integ
45、er; ExcelLastCol : Integer): Boolean; !Renames a worksheet. Function ExcelRenameSheet( Excel : Variant; OldName : ShortString; NewName : ShortString): Boolean; !Saves the range on the currently active sheet to a DBase 4 table. Function ExcelSaveAsDBase4( Excel : Variant; ExcelFirstRow : Integer; Exc
46、elFirstCol : Integer; ExcelLastRow : Integer; ExcelLastCol : Integer; OutFilePath : ShortString; OutFileName : ShortString): Boolean; !Saves the range on the currently active sheet to a text file. Function ExcelSaveAsText( Excel : Variant; ExcelFirstRow : Integer; ExcelFirstCol : Integer; ExcelLastR
47、ow : Integer; ExcelLastCol : Integer; OutFilePath : ShortString; OutFileName : ShortString): Boolean; !Selects a range on the currently active sheet. From the current cursor position a block is selected down and to the right. The block proceeds down until an empty row is encountered. The block proce
48、eds right until an empty column is encountered. Function ExcelSelectBlock( Excel : Variant; FirstRow : Integer; FirstCol : Integer): Boolean; !Selects a range on the currently active sheet. From the current cursor position a block is selected that contains the currently active cell. The block proceeds in each direction until an empty row or column is encountered. Function ExcelSelectBlockWhole(Excel: Variant): Boolean; !Selects a cell on the currently active sheet Function ExcelSelectCell(Excel : Variant; RowNum, ColNum: Integer): Boolean;