[h2][red]下面是轉載的[/red][/h2]<br>可以學習學習<br><br>全面控制 Excel<br>首先创建 Excel 对象,使用ComObj:<br>var ExcelID: Variant;<br> ExcelID := CreateOleObject( 'Excel.Application' );<br>1) 显示当前窗口:<br>ExcelID.Visible := True;<br>2) 更改 Excel 标题栏:<br>ExcelID.Caption := '应用程序调用 Microsoft Excel';<br>3) 添加新工作簿:<br> ExcelID.WorkBooks.Add;<br>4) 打开已存在的工作簿:<br> ExcelID.WorkBooks.Open( 'C:/Excel/Demo.xls' );<br>5) 设置第2个工作表为活动工作表:<br> ExcelID.WorkSheets[2].Activate; <br> 或 ExcelID.WorkSheets[ 'Sheet2' ].Activate;<br>6) 给单元格赋值:<br> ExcelID.Cells[1,4].Value := '第一行第四列';<br>7) 设置指定列的宽度(单位:字符个数),以第一列为例:<br> ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;<br>8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:<br> ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米<br>9) 在第8行之前插入分页符:<br> ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;<br>10) 在第8列之前删除分页符:<br> ExcelID.ActiveSheet.Columns[4].PageBreak := 0;<br>11) 指定边框线宽度:<br> ExcelID.ActiveSheet.Range[ 'B3
4' ].Borders[2].Weight := 3;<br> 1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / )<br>12) 清除第一行第四列单元格公式:<br> ExcelID.ActiveSheet.Cells[1,4].ClearContents;<br>13) 设置第一行字体属性:<br>ExcelID.ActiveSheet.Rows[1].Font.Name := '隶书';<br>ExcelID.ActiveSheet.Rows[1].Font.Color := clBlue;<br>ExcelID.ActiveSheet.Rows[1].Font.Bold := True;<br>ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;<br>14) 进行页面设置:<br> a.页眉:<br> ExcelID.ActiveSheet.PageSetup.CenterHeader := '报表演示';<br> b.页脚:<br> ExcelID.ActiveSheet.PageSetup.CenterFooter := '第&P页';<br> c.页眉到顶端边距2cm:<br> ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;<br> d.页脚到底端边距3cm:<br> ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;<br> e.顶边距2cm:<br> ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;<br> f.底边距2cm:<br> ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;<br> g.左边距2cm:<br> ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;<br> h.右边距2cm:<br> ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;<br> i.页面水平居中:<br> ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;<br> j.页面垂直居中:<br> ExcelID.ActiveSheet.PageSetup.CenterVertically := 2/0.035;<br> k.打印单元格网线:<br> ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;<br>15) 拷贝操作:<br> a.拷贝整个工作表:<br> ExcelID.ActiveSheet.Used.Range.Copy;<br> b.拷贝指定区域:<br> ExcelID.ActiveSheet.Range[ 'A1:E2' ].Copy;<br> c.从A1位置开始粘贴:<br> ExcelID.ActiveSheet.Range.[ 'A1' ].PasteSpecial;<br> d.从文件尾部开始粘贴:<br> ExcelID.ActiveSheet.Range.PasteSpecial;<br> 16) 插入一行或一列:<br> a. ExcelID.ActiveSheet.Rows[2].Insert;<br> b. ExcelID.ActiveSheet.Columns[1].Insert;<br> 17) 删除一行或一列:<br> a. ExcelID.ActiveSheet.Rows[2].Delete;<br> b. ExcelID.ActiveSheet.Columns[1].Delete;<br> 18) 打印预览工作表:<br> ExcelID.ActiveSheet.PrintPreview;<br> 19) 打印输出工作表:<br> ExcelID.ActiveSheet.PrintOut;<br> 20) 工作表保存:<br> if not ExcelID.ActiveWorkBook.Saved then<br> ExcelID.ActiveSheet.PrintPreview;<br> 21) 工作表另存为:<br> ExcelID.SaveAs( 'C:/Excel/Demo1.xls' );<br> 22) 放弃存盘:<br> ExcelID.ActiveWorkBook.Saved := True;<br> 23) 关闭工作簿:<br> ExcelID.WorkBooks.Close;<br> 24) 退出 Excel:<br>ExcelID.Quit;<br><br>如何在Delphi中操作Excel<br>在数据库应用软件的开发过程中,经常需要把数据转换成Excel文件,让用户作进一步的数据处理。而Delphi是开发数据库应用系统的常用工具,那么,如何在Delphi中操作Excel呢? <br>我们知道,在Microsoft Office软件中有一种内嵌的编程语言VBA,它是一种宏语言,利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据和设置字体等。另一方<br>面,Microsoft Office软件中的宏能以VBA代码的形式记录下你的操作过程。因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到你的软件中。但是VBA也存在<br>一个缺点,它必须有Microsoft Office作平台,在哪里编写,必须在哪里执行。例如在Excel下编写的一段VBA代码,则它只有在Excel下才能运行。因此,笔者的方法就是把VBA代码嵌入<br>到Delphi中,从而实现用Delphi操作Excel。 <br> 下面,我们以Delphi程序为例,说明这种调用方法: <br> Unit excel; <br> interface <br> uses <br> Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComObj; <br> //ComObj是操作OLE对象的函数集 <br> type TForm1 =class(TForm) <br> Button1: TButton; <br> procedure Button1Click(Sender: TObject); <br> private <br> { Private declarations } <br> public <br> { Public declarations } <br> end; <br> var <br> Form1: TForm1; <br> implementation <br> {$R *.DFM} <br> procedure TForm1.Button1Click(Sender: TObject); <br> var <br> eclApp,WorkBook:Variant; <br> //声明为OLE Automation 对象 <br> xlsFileName:string;begin <br> xlsFileName:='ex.xls'; <br> try <br> //创建OLE对象Excel Application与 WorkBook <br> eclApp:=CreateOleObject('Excel.Application'); <br> WorkBook:=CreateOleobject('Excel.Sheet'); <br> except <br> ShowMessage('您的机器里未安装Microsoft Excel。'); <br> Exit; <br> end; <br> try <br> ShowMessage('下面演示:新建一个XLS文件,并写入数据,最后关闭它。'); <br> workBook:=eclApp.workBooks.Add; <br> eclApp.Cells(1 , 1):='字符型'; <br> eclApp.Cells(2 , 1):='Excel文件'; <br> eclApp.Cells(1 , 2):='Money型'; <br> eclApp.Cells(2 , 2):=10.01; <br> eclApp.Cells(1 , 3):='日期型';eclApp.Cells(2 , 3):=Date; <br> WorkBook.saveas(xlsFileName); <br> WorkBook.close; <br> ShowMessage('下面演示:打开刚创建的XLS文件,并修改其中的内容,然后,由用户决定是否保存。'); <br> WorkBook:=eclApp.workBooks.Open(xlsFileName); <br> eclApp.Cells(2 , 1):='Excel文件类型'; <br> if MessageDlg(xlsFileName+'文件已被修改,是否保存?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then <br> WorkBook.save <br> else <br> workBook.Saved := True; //放弃修改 <br> WorkBook.Close; <br> eclApp.Quit; <br> //退出Excel Application <br> //释放VARIANT变量 <br> eclApp:=Unassigned; <br> except <br> ShowMessage('不能正确操作Excel文件。可能是该文件已被其他程序打开,或系统错误。'); <br> WorkBook.close; <br> eclApp.Quit; <br> //释放VARIANT变量 <br> eclApp:=Unassigned; <br> end; <br> end; <br> end. <br> 经过上述操作过程后,我们就可以很放心地将数据库中的数据转换成Excel文件了。<br>///////2<br>在Delphi 5中简单地封装了一组Microsoft Office自动化对象(Automation servers)。<br>它使得我们很容易地把Office中的应用程序(Word, Excel, PowerPoint, Outlook and<br> Access等)当作一个com应用服务器进行控制。在Delphi 5中已经带了Word与PowerPoint<br>的例子,因为Excel的调用与这两个应用服务器的调用略有不同,所以本人根据这两个例子<br>写了个Excel 97的简单例子以供参考。 <br>步聚 <br>创建一个普通Application。<br>在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。<br>连接Excel 97,具体方法如下: <br>打开Excel97。<br>Try<br> ExcelApplication1.Connect;<br> Except<br> End;<br> ExcelApplication1.Visible[0]:=True;<br>增加一个Workbook。<br>ExcelWorkbook1.ConnectTo(ExcelApplication1.<br>Workbooks.Add(EmptyParam,0));<br>添加一个Worksheet。<br> var<br> Temp_Worksheet: _WorkSheet;<br> begin<br> Try<br> Temp_Worksheet:=ExcelWorkbook1.<br> WorkSheets.Add(EmptyParam,<br>EmptyParam,EmptyParam,EmptyParam,0) <br>as _WorkSheet;//(注意)<br>ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);<br>Except<br>ShowMessage('Failure');<br> End;<br> end;<br>关闭Excel.<br> Try<br> ExcelApplication1.Quit;<br> ExcelWorksheet1.Disconnect;<br> ExcelWorkbook1.Disconnect;<br> ExcelApplication1.Disconnect;<br> Except<br> End;<br>对Excel的一些操作: <br>选择当前Workbook的某一Worksheet.<br>procedure TForm1.ComboBox1DropDown<br>(Sender: TObject);<br>var<br> i: Integer;<br>begin<br> ComboBox1.Clear;<br> For i:=1 to ExcelWorkbook1.<br> Worksheets.Count do<br> ComboBox1.Items.Add<br> ((ExcelWorkbook1.Worksheets.Item
<br> as _WorkSheet).Name);<br>end;<br>procedure TForm1.ComboBox1Change<br>(Sender: TObject);<br>begin<br> ExcelWorkSheet1.ConnectTo<br>(ExcelWorkbook1.Worksheets.Item<br> [ComboBox1.ItemIndex+1] as _WorkSheet);<br> ExcelWorkSheet1.Activate;<br>end;<br>选择某一Workbook:<br>procedure TForm1.ComboBox2DropDown<br>(Sender: TObject);<br>var<br> i: Integer;<br>begin<br>ComboBox2.Clear;<br>if ExcelApplication1.Workbooks.Count >0 then<br>For i:=1 to ExcelApplication1.Workbooks.Count do<br>Combobox2.Items.Add(ExcelApplication1.<br>Workbooks.Item.Name);<br>end;<br>procedure TForm1.ComboBox2Change(Sender: TObject);<br>begin<br>ExcelWorkSheet1.Disconnect;<br>ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.<br>Item[Combobox2.ItemIndex+1]);<br> ExcelWorkBook1.Activate;<br> ExcelWorksheet1.ConnectTo(ExcelWorkBook1.<br>ActiveSheet as _WorkSheet);<br> ExcelWorkSheet1.Activate;<br>end;<br>对某一单元格进行赋值及取值。<br>procedure TForm1.Button5Click(Sender: TObject);<br>begin<br> ExcelWorksheet1.Cells.Item[SpinEdit2.Value,<br>SpinEdit1.Value]:=Edit1.Text;<br>end;<br>procedure TForm1.Button6Click(Sender: TObject);<br>begin<br> Edit1.Text:=ExcelWorksheet1.Cells.Item[<br>SpinEdit2.Value,SpinEdit1.Value];<br>end;<br>选择某一区域<br>ExcelWorkSheet1.Range['A1','C1'].Select;<br>打开一个Excel文件。<br> if OpenDialog1.Execute then<br> Begin<br> Try<br>ExcelWorkBook1.ConnectTo<br>(ExcelApplication1.Workbooks.Open<br> (OpenDialog1.FileName,<br>EmptyParam,EmptyParam,EmptyParam,<br>EmptyParam,EmptyParam,<br>EmptyParam,EmptyParam,EmptyParam,<br> EmptyParam,EmptyParam,<br>EmptyParam,EmptyParam,0));<br> ExcelWorkSheet1.ConnectTo<br>(ExcelWorkBook1.Activesheet<br> as _Worksheet);<br> Except;<br> End;<br> End;<br>