delphi控制excel大全(完全版)
- 格式:pdf
- 大小:86.86 KB
- 文档页数:6
1.往Excel中插入图片用MsExcelWorkSheet.Pictures.Insert(ExtractFilePath(ParamStr(0))+'temp.jpg'); 可以放图片varExcelApp,MyWorkBook,MsExcelWorkSheet,Temple1:Variant;begintryExcelApp:=CreateOleObject('Excel.Application');MyWorkBook:=CreateOleobject('Excel.Sheet');MyWorkBook:=ExcelApp.WorkBooks.open(ExtractFilePath(ParamStr(0))+'testItemB ook.xls');MsExcelWorkSheet:=MyWorkBook.WorkSheets['3'];if not ADOQueryItemBook.IsEmpty thenbeginTblobfield(ADOQueryItemBook.FieldByName('pic')).SaveToFile(ExtractFilePath(ParamStr(0))+'temp.jpg');MsExcelWorkSheet.Pictures.Insert(ExtractFilePath(ParamStr(0))+'temp.jpg'); end;提供一些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].ColumnsWidth := 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[ 'B3:D4' ].Borders[2].Weight := 3;1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )12) 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;13) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1] := '隶书';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.拷贝整个工作表:ed.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 thenExcelApp.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。
怎么在delphi中读取Excel数据(各种详细操作)转( 一) 使用动态创建的方法首先创建Excel 对象,使用ComObj :VarExcelApp : 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 ] := '' 隶书'' ;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.拷贝整个工作表:ed.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 ThenExcelApp.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。
如何在Delphi中操作Excel在数据库应用软件的开发过程中,经常需要把数据转换成Excel文件,让用户作进一步的数据处理。
而Delphi是开发数据库应用系统的常用工具,那么,如何在Delphi中操作Excel呢?我们知道,在Microsoft Office软件中有一种内嵌的编程语言VBA,它是一种宏语言,利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据和设置字体等。
另一方面,Microsoft Office软件中的宏能以VBA代码的形式记录下你的操作过程。
因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到你的软件中。
但是VBA也存在一个缺点,它必须有Microsoft Office作平台,在哪里编写,必须在哪里执行。
例如在Excel下编写的一段VBA代码,则它只有在Excel下才能运行。
因此,笔者的方法就是把VBA代码嵌入到Delphi中,从而实现用Delphi操作Excel。
下面,我们以Delphi程序为例,说明这种调用方法:Unit excel;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs, StdCtrls,ComObj;//ComObj是操作OLE对象的函数集type TForm1 =class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);vareclApp,WorkBook:Variant;//声明为OLE Automation 对象xlsFileName:string;beginxlsFileName:=‘ex.xls‘;try//创建OLE对象Excel Application与 WorkBookeclApp:=CreateOleObject(‘Excel.Application‘);WorkBook:=CreateOleobject(‘Excel.Sheet‘);exceptShowMessage(‘您的机器里未安装Microsoft Excel。
Delphi处理WordExcelDelphi处理Word/Excel⼀、VBA代码含义Microsoft Word是⼀个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是⼀个字处理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。
Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现⼀些⽂档处理的⾃动化,如实现⽂档的⾃动备份、存盘等,可扩展Word⽂档的功能,因此,能够充分利⽤Word的特性,甚⾄使Word成为⾃⼰软件的⼀部分。
Word的宏既有有利的⼀部分,因为它能够帮助我们实现⽂档的⾃动化,但是Word的宏也不是纯粹的有利,有时它可能危害我们的⽂档、计算机系统甚⾄⽹络,从最开始的Taiwan NO1宏病毒到现在的Melissa宏病毒,从最开始的简单的提⽰,耗尽系统资源到现在的乱发电⼦邮件,将个⼈的信息发送到⽹络上,甚⾄向硬盘的Autoexec.bat(⾃动批处理⽂件)中添加Deltree C: -y,破坏整个Windows系统。
⼆、Word中内嵌的Com技术可以说Word是对Com技术⽀持最好的软件,这样说似乎是太极端了⼀点,但是Word提供的强⼤的编程接⼝技术却能够是我们通过程序控制Word的任何⼀部分。
⽆论是⽂件的打开、存盘、打印还是⽂档中表格的⾃动绘制。
通过编程软件,可以灵活的操纵word,这⾥只以Borland Delphi为例,进⾏详细描述:1、在Delphi中调⽤Word软件/⽂件的⽅法在Word中调⽤Word软件,归纳起来有三种⽅法:。
通过Delphi的控件TOleContainer 将Word嵌⼊a.使⽤Delphi提供的Servers控件调⽤Word,使⽤Word的属性b.通过真正的Com技术,将Office软件⽬录中⽂件MSWORD9.OLB中的类库全部导⼊Delphi中,利⽤Com技术编程c.使⽤CreateOleObject将启动Word,然后以Ole⽅式对Word进⾏控制。
delphi excel 例程Delphi Excel 例程:一步一步回答在Delphi中,我们可以使用Excel 例程来实现与Excel文件的交互。
Excel 例程是一组可以通过Delphi编程语言来操作Excel文件的方法和函数。
本文将介绍如何使用Delphi和Excel 例程来创建、读取、写入和操作Excel 文件。
第一步:安装Excel 例程要开始使用Delphi和Excel 例程,我们首先需要安装Excel 例程库。
这可以通过三种方法之一来实现:1. 使用ActiveX组件:在Delphi IDE的“Component”菜单下,选择“Import ActiveX Control”。
在弹出的窗口中,选择“Microsoft Excel xx.x Object Library”(其中"xx.x"表示Excel版本号),然后点击“Install”按钮进行安装。
2. 使用第三方库:你还可以使用第三方库,如TExcelComponent或Flexcel,它们提供了更多的功能和灵活性。
3. 编写自己的Excel 例程:如果你对编程充满信心,你可以自己编写一组Excel 例程,以与Excel文件交互。
不过,这需要一些时间和努力。
第二步:创建一个新的Excel文件在使用Delphi和Excel 例程之前,我们首先需要创建一个Excel文件。
下面是示例代码,展示了如何使用Excel 例程来创建和保存一个新的Excel文件:delphivarExcelApp: Variant;ExcelWorkbook: Variant;ExcelWorksheet: Variant;begin创建Excel应用程序对象ExcelApp := CreateOleObject('Excel.Application');创建一个新的工作簿ExcelWorkbook := ExcelApp.Workbooks.Add;获取第一个工作表ExcelWorksheet := ExcelWorkbook.Worksheets.Item[1];设置单元格的值ExcelWorksheet.Cells[1, 1].Value := 'Hello'; ExcelWorksheet.Cells[1, 2].Value := 'World!';保存工作簿ExcelWorkbook.SaveAs('C:\NewExcelFile.xlsx');关闭Excel应用程序ExcelApp.Quit;end;通过这段代码,我们可以创建一个新的Excel应用程序对象,并在其中创建一个新的工作簿。
在delphi中调用excel有四种方式,我们选取其中的一种用oleobject来装载excel工作表的方式来谈delphi控制excel的重要属性和方法。
首先给出通过ole创建的一些主要代码步进行简单说明:创建ole对象:var olecon: tolecontainer;olecon:= tolecontainer.create(self);olecon.oleobject:= olecon.createobject('excel.sheet',false);或选择导入一个excel文件来创建ole对象:olecon.oleobject:= olecon.createobjectfromfile(xlsname,false);最好隐藏excel的几个工具条,这样就好象是嵌在你的程序中的一个表而已了:mandbars['standard'].visible:=false;mandbars['formatting'].visible:=false ;mandbars['reviewing'].visible:=false;然后显示并激活excel表,对tolecontainer定义的对象:olecon.show;olecon.doverb(0);这样基本可以了,但tolecontainer有个不好的地方,就是当你一点击其它控件是就它就失去焦点,然后就自动退出,其实并没有真的退出,只是需要你再次激活它而已,关键是当它失去焦点的时候就excel对象就不见了,可以用timage控件把tolecontainer所在的地方有excel时候的区域图片截下来骗骗用户,我们这里主要不是讲这个,就不详述了。
下面我们就开始讲excel_tlb中的接口的常用属性和方法,主要是针对导出和设定报表格式的一些接口元素。
单元格的读写属性:olecon.oleobject.application.cells.item[1,1];olecon.oleobject.application.cells(1,1);olecon.oleobject.application.cells[1,1].value;上面三种都可以对工作表的‘a1’单元进行读写。
Delphi 自动化控制Excel (A)如何控制Excel 程序来输出数据,插入公式并根据数据画出图表来呢?Delphi 5 提供了一组封装了Office 97和Office 2000的控件,这组控件位于控件面板的Servers 页面上,它可以极大地简化对Office 的调用。
不过糟糕的是,Borland 并没有为这些控件提供使用帮助,但实际上使用这些控件是非常简单的,并且Office 的对象体系也在Office 的帮助中有着详细的说明。
下面我们将编写一个程序来演示如何控制Excel 来创建月份销售情况的报表和图表的。
程序运行结果如图1.29所示。
连接Excel同Excel 建立连接可以使用Connect 方法。
控件由于某些原因可能同Excel 无法建立连接,因此应该为连接代码建立一个异常处理,代码示意如下:tryExcelApplication1.Connect;excepton E: Exception dobeginE.Message := '无法连接Excel';Raise;end;end;ExcelApplication1.Visible[0] := True;图1.29建立连接的方式依赖于Server组件的两个重要属性:第一个是AutoConnect 属性,如果为True,表明程序启动后无须调用connect方法就能自动连接Excel;另一个属性是ConnectKind ,它决定了如何建立连接:ckRunningOrNew 表明首先尝试连接到一个当前的服务器上,如果服务器还没运行,则创建服务器的一个实例,然后连接。
ckNewInstance 总是创建一个新的服务器实例,当我们希望不同用户之间保持相互独立的时候比较有用。
ckRunningInstance 只同当前运行的服务器相连接。
ckRemote 同一个由RemoteMachineName指定的远程机器上运行的服务器相连接。
一、使用单元:Use :EXCEL 2000, ComObj二、定义var ExcelApp,Sheet,Range: Variant;注释:ExcelApp 为定义的Excel 对象Sheet 为定义的工作表(Sheet)对象Range 为定义的工作表范围三、关于Excel 对象创建初始化以及工作表、工作表范围的初始化1. 创建excel对象:ExcelApp := CreateOleObject( 'Excel.Application' );2. 显示当前窗口:ExcelApp.Visible := True;3. 更改Excel 标题栏:ExcelApp.Caption := '应用程序调用Microsoft Excel';4. 添加新工作簿:ExcelApp.WorkBooks.Add;5 打开已存在的工作簿:ExcelApp.WorkBooks.Open(FilePath);6.设置工作簿默认工作表张数ExcelApp.SheetsInNewWorkbook := 1;7.设置工作表名称ExcelApp.Workbooks[WorkbookNum].WorkSheets[WorkSheetNum].Name := PName;8.工作表初始化Sheet:= ExcelApp.Workbooks[WorkbookNum].WorkSheets[WorkSheetNum];9.工作表范围初始化Range := Sheet.Range['A1:DL1'] ;10.设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;或ExcelApp.WorksSheets[ 'Sheet2' ].Activate;三、单元格赋值设置数值类型1. 给单元格赋值:ExcelApp.Cells[row, column].Value := '第一行第四列';或Sheet.Cells[row, column] := ‘第一行第四列’;2 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[row,column].ClearContents;或Sheet.Cells[row,column]. ClearContents3设置单元格数值类型为文字型Range.NumberFormatLocal := '@';四、设置列宽和行高1. 设置指定列的宽度(单位:字符个数):ExcelApp.ActiveSheet.Columns[column].ColumnsWidth := 5;或Sheet.Columns[column].ColumnWidth := 5;2.设置指定行的高度(单位:磅)(1磅=0.035厘米)ExcelApp.ActiveSheet.Rows[row].RowHeight := 1/0.035; // 1厘米或Sheet. Rows [row]. RowHeight:= 1/0.035;五、对齐方式1.水平对齐Range.HorizontalAlignment:=xlCenter; 居中Range.HorizontalAlignment:=xlLeft;居左Range.HorizontalAlignment:=xlRight;居右或Sheet.Cells[row,column].HorizontalAlignment:=xlCenter; 居中Sheet.Cells[row,column].HorizontalAlignment:=xlLeft;居左Sheet.Cells[row,column].HorizontalAlignment:=xlRight;居右2.垂直对齐Range. VerticalAlignment:=xlCenter; 居中Range. VerticalAlignment:= xltop;顶端对齐Range. VerticalAlignment:= xlbottomfont;底部对齐或Sheet.Cells[row,column]. VerticalAlignment:=xlCenter; 居中Sheet.Cells[row,column]. VerticalAlignment:= xltop;顶端对齐Sheet.Cells[row,column]. VerticalAlignment:= xlbottomfont; 底部对齐六、文字控制1.自动换行Range.WrapText:=true;或Sheet.Cells[row,column]. WrapText:=true;2.合并单元格Sheet.range['A17:G17'].Merge;3.跨越合并Sheet.range['C27:D34'].Merge(true);七、字型设置1.设置字体大小Range.Characters.Font.Size := 10;或Sheet.Cells[row,column].Characters.Font.Size := 10;2.字体加重Range.Characters.Font. Bold:= true;或Sheet.Cells[row,column].Characters.Font. Bold:= true;3.字体倾斜Range.Characters.Font. Italic:= true;或Sheet.Cells[row,column].Characters.Font. Italic:= true;4.字体:=’楷体_GB2312'或Sheet.Cells[row,column].Characters.Font. Name:=’楷体_GB2312’5字体样式(常规,斜体,粗体,粗斜体)Range.Characters.Font.FontStyle:=’常规'或Sheet.Cells[row,column].Characters.Font.FontStyle:=’常规'6.下划线Range.Characters.Font.UnderLine := True;或Sheet.Cells[row,column].Characters.Font.UnderLine := True;八、分页符操作1.在第8行之前插入分页符:ExcelApp.WorkSheets[1].Rows.PageBreak := 1;或Sheet. Rows. PageBreak := 1;或Range. Rows. PageBreak := 1;2.在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;或Sheet.Columns[4]. PageBreak := 0;或Range.Columns[4].PageBreak :=0;九、关于边框的操作:Border :1-左2-右3-顶4-底5-斜( \ ) 6-斜( / )1.指定边框线宽度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[Border].Weight := 3;或Sheet. Borders[Border].Weight := 3;或Range Borders[Border].Weight := 3;2.边框线线条形状Sheet.Borders[Border].linestyle :=1;或Range.Borders[Border]. Linestyle := 1;Linestyle 1:实线2 虚线12 双横线十、关于颜色1. 设置单元格背景色Sheet.Cells[row,column].Interior.ColorIndex := 38;或Range.Interior.ColorIndex := 38;2.字体颜色Range.Characters.Font.Colorindex:=6;或Sheet.Cells[row,column].Characters.Font.Colorindex:=6 Colorindex的值十一、冻结窗口Sheet.Cells[2,3].select;ExcelApp.ActiveWindow.FreezePanes := True;十二、打印设置1.页眉:Sheet.PageSetup.CenterHeader := '报表演示';2.页脚:Sheet.PageSetup.CenterFooter := '第&P页';3页眉到顶端边距2cm:Sheet.PageSetup.HeaderMargin := 2/0.035;4.页脚到底端边距3cm:Sheet.PageSetup.HeaderMargin := 3/0.035;5.顶边距2cm:Sheet.PageSetup.TopMargin := 2/0.035;6.底边距2cm:Sheet.PageSetup.BottomMargin := 2/0.035;7.左边距2cm:Sheet.PageSetup.LeftMargin := 2/0.035;8.右边距2cm:Sheet.PageSetup.RightMargin := 2/0.035;9.页面水平居中:Sheet.PageSetup.CenterHorizontally := 2/0.035;10.页面垂直居中:Sheet.PageSetup.CenterVertically := 2/0.035;11.打印单元格网线:Sheet.PageSetup.PrintGridLines := True;12缩放比例Sheet.PageSetup.zoom := 75;13横向打印Sheet.PageSetup.Orientation:= xllandscape;14 纵向打印Sheet.PageSetup.Orientation:=xlportrait;15.设置打印标题行Sheet.PageSetup.PrintTitleRows := Sheet.Rows['1:3'].Address ;Sheet.PageSetup.PrintTitleColumns := Sheet.Rows[3].Address;16.打印预览工作表:Sheet.PrintPreview;17 打印输出工作表:Sheet.PrintOut;十三、拷贝操作:1.拷贝整个工作表:ed.Range.Copy;2. b.拷贝指定区域:Sheet.Range[ 'A1:E2' ].Copy;3.从A1位置开始粘贴:Sheet.Range.[ 'A1' ].PasteSpecial;4.从文件尾部开始粘贴:Sheet.Range.PasteSpecial;十四、行列的插入删除1. 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;b. ExcelApp.ActiveSheet.Columns[1].Insert;2. 删除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;b. ExcelApp.ActiveSheet.Columns[1].Delete;十五、Excel保存关闭1.工作表保存:if not ExcelApp.ActiveWorkBook.Saved thenExcelApp.ActiveSheet.PrintPreview;2.工作表另存为:ExcelApp. SaveAs ( filepath);3 放弃存盘:ExcelApp.ActiveWorkBook.Saved := True;4. 关闭工作簿:ExcelApp.WorkBooks.Close;5. 退出Excel:ExcelApp.Quit;6. 工作表关闭ExcelApp.WorkBooks.Close ;十六、其他1. 已经使用的行数edRange.Rows.Count;(三)使用Delphi控制Excel二维图在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.chartype:=4;4)给二维图赋值series:=achart.chart.seriescollection;range:=sheet1!r2c3:r3c9;series.add(range,true);5)加上二维图的标题achart.Chart.HasTitle:=True;achart.Chart.ChartTitle.Characters.Text:=’Excel二维图’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控制Excel2000操作全集十分值得收藏的咚咚,对认为有用的人很有用,呵呵-----------------------------------------Delphi控制Excel2000希望这分数据,为论坛中的各位会员关于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].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['B34'].Borders[2].Weight:=3; 1-左2-右3-顶4-底5-斜(\)6-斜(/)12)清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;13)设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1]:='隶书'; 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:='第&页';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.拷贝整个工作表:ed.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控件方法在Form中分别放入ExcelApplication,ExcelWorkbook和ExcelWorksheet。
Delphi 控制Excel1 创建Excel文件要在Delphi中控制Excel,就必须用到OLE自动化。
现在一般采用OLE2来创建OLE对象,当激活一个OLE对象时,服务器程序仅在容器程序内部激活,这就是所谓的“就地激活”(in-place activation)。
创建Excel文件时,先创建一个OLE对象,然后在对象中建立工作表worksheet,如函数createExcel所示:function createExcel:variant;varv:variant;sheet:variant;beginv:=createoleobject('Excel.Application');//创建OLE对象v.visible:=true;v.workbooks.add(-4167); //添加工作表v.workbooks[1].sheets[1].name:='test';sheet:=v.workbooks[1].sheets['test'];return v;end;2 数据表格控制Excel表格的控制,主要包括数据的导入、修改;单元格的合并、边框的控制;表格的复制、粘贴等。
当报表格式一定的情况下,表格的复制、粘贴显得尤为重要,这样,可以先制作一个文件模板,然后按照实际需要输出多页报表即可。
(1)数据的导入(importData)procedure importData;varI,j:integer;v:variant;beginv:=createExcel; //创建Excel文件testfor I:=0 to maxcolumn dobeginfor j:=0 to maxrow dov.workbooks[1].sheets[1].cells[I,j]:=I*j; //导入数据end;end;(2)单元格的合并、边框的控制(lineStylecontrol)单元格的合并,是在选定合并范围的情况下进行的。
Delphi 操作EXCEL —— EXCEL workbook.saveas 函数详解本问所有资料来自于Excel2003 VBA帮助文件,张荣整理,适用于DELPHI,VB的高级语言操作Excel用ExcelApplication.WorkBook.SaveAs(filename,FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodePage, TextVisualLayout ,Local)1、Filename: Variant 类型,可选。
该字符串表示要保存的文件名。
可包含完整路径。
如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。
2、FileFormat: Variant 类型,可选。
保存文件时使用的文件格式。
要得到有效选项的列表,请参阅FileFormat 属性。
对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的Excel 版本格式,可选常数如下:xlAddIn 18xlCSV 6xlCSVMac 22xlCSVMSDOS 24xlCSVWindows 23xlCurrentPlatformText -4158xlDBF2 7xlDBF3 8xlDBF4 11xlDIF 9xlExcel2 16xlExcel2FarEast 27xlExcel3 29xlExcel4 33xlExcel4Workbook 35xlExcel5 39xlExcel7 39xlExcel9795 43xlHtml 44xlIntlAddIn 26xlIntlMacro 25xlSYLK 2xlTemplate 17xlTextMac 19xlTextMSDOS 21xlTextPrinter 36xlTextWindows 20xlUnicodeText 42xlWebArchive 45xlWJ2WD1 14xlWJ3 40xlWJ3FJ3 41xlWK1 5xlWK1ALL 31xlWK1FMT 30xlWK3 15xlWK3FM3 32xlWK4 38xlWKS 4xlWorkbookNormal -4143xlWorks2FarEast 28xlWQ1 34xlXMLData 47xlXMLSpreadsheet 463、Password :Variant 类型,可选。
下面是我写的通用文档微机管理系统的打印部分原代码,包括合并execl单元格,加入分页符号,设置行高,列宽,设置execl页头,设置每页记录数,画单元格边框,调用execl模板等等procedure TfrmMain.Button3Click(Sender:TObject);//动态打印excel报表vartiaojian:string;//tiaojian为一个sql查询语句,全宗号,目录号,起始日期为一数据库字段begintiaojian:=';if Edit7.Text<>'thenbegintiaojian:=tiaojian+'(全宗号='+EDit7.Text+')and';end;if Edit8.Text<>'thenbegintiaojian:=tiaojian+'(目录号='+Edit8.Text+')and';end;if Edit9.Text<>'thenbegintiaojian:=tiaojian+'(起始日期>='+Edit9.Text+')and';endelse tiaojian:=tiaojian+'(起始日期>=0)and';if Edit10.Text<>'thenbegintiaojian:=tiaojian+'(起始日期<='+Edit10.Text+')and';end;tiaojian:=copy(tiaojian,1,length(tiaojian)-3);//tiaojian为一个sql查询语句Printanjuan(tiaojian);//调用打印过程ShellExecute(Handle,'Open',PChar(GetCurpath+'temp.xls'),nil,nil,sw_shownormal);//调用excel查看生成的文件ProgressBar1.Position:=0;//ProgressBar1为一个进程条控件end;procedure TfrmMain.Printanjuan(tiaojiao:string);varnowhangi,i,jilushu,LCID:integer;//nowhangi当前execl的所在行,jilushu当前的记录位置ssql,PathName:string;oldcur:tcursor;ExcelApplication1:TExcelApplication;ExcelWorkbook1:TExcelWorkbook;ExcelWorkSheet1:TExcelWorksheet;xl,Cell1:olevariant;beginLCID:=LOCALE_USER_DEFAULT;if FileExists(GetCurpath+'temp.xls')then//删除动态生成的临时temp.xls文件tryDeleteFile(GetCurpath+'temp.xls');exceptend;ssql:=';//执行sql查询ssql:='select*from mainanjuan where('+tiaojiao+')order by系统编号'; doadosql(dm1.queryanjuan,ssql);begintryExcelApplication1:=TExcelApplication.Create(Self);ExcelWorkbook1:=TExcelWorkbook.Create(Self);ExcelWorkSheet1:=TExcelWorksheet.Create(Self);exceptshowmessage('对不起,您没有安装Excel2000!');abort;end;end;ExcelApplication1.Connect;ExcelApplication1.Workbooks.Add(null,0);//如果调用一个模板,改动该句如://ExcelApplication1.Workbooks.Add('c:\zichang.xls',0);ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]); ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1]as_WorkSheet); //写入execlProgressBar1.Position:=5;if dm1.queryanjuan.RecordCount>0thenbegin//设置列宽,行高nowhangi:=1;ExcelApplication1.Range['A1','A1'].ColumnWidth:=3.5;ExcelApplication1.Range['B1','B1'].ColumnWidth:=3.5;ExcelApplication1.Range['C1','C1'].ColumnWidth:=3.5;ExcelApplication1.Range['D1','D1'].ColumnWidth:=8;ExcelApplication1.Range['E1','E1'].ColumnWidth:=20;ExcelApplication1.Range['F1','F1'].ColumnWidth:=8.75;ExcelApplication1.Range['G1','G1'].ColumnWidth:=8.75;ExcelApplication1.Range['H1','H1'].ColumnWidth:=3.0;ExcelApplication1.Range['I1','I1'].ColumnWidth:=3.0;ExcelApplication1.Range['J1','J1'].ColumnWidth:=3.0;//设置每页的记录数目for jilushu:=1to(dm1.queryanjuan.RecordCount)dobegin//ProgressBar1为一个进程条控件ProgressBar1.Position:=(jilushu*100)div(dm1.queryanjuan.RecordCount);tryif jilushu mod strtoint(edit14.Text)=1then//edit14.Text的值为一个数字,表示每页的记录数目begin//打印每页的页头ExcelApplication1.Range['A'+inttostr(nowhangi),'J'+inttostr(nowhangi)].Merge(xl);//合并execl单元格ExcelWorkSheet1.cells.Item[nowhangi,1]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,1].font.size:=24;ExcelWorkSheet1.cells.Item[nowhangi,1].RowHeight:=32;ExcelWorkSheet1.cells.Item[nowhangi,1]:='案卷目录';ExcelWorkSheet1.cells.Item[nowhangi,1].HorizontalAlignment:=xlCenter;ExcelWorkSheet1.cells.Item[nowhangi+1,1]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi+1,1].font.size:=12;ExcelWorkSheet1.cells.Item[nowhangi+1,1].Font.Bold:=True;ExcelWorkSheet1.cells.Item[nowhangi+1,1].Orientation:=xlVertical;ExcelWorkSheet1.cells.Item[nowhangi+1,1].VerticalAlignment:=xlTop;ExcelWorkSheet1.cells.Item[nowhangi+1,1]:='顺序号';ExcelWorkSheet1.cells.Item[nowhangi+1,2]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi+1,2].font.size:=12;ExcelWorkSheet1.cells.Item[nowhangi+1,2].Font.Bold:=True;ExcelWorkSheet1.cells.Item[nowhangi+1,2].Orientation:=xlVertical;ExcelWorkSheet1.cells.Item[nowhangi+1,2].VerticalAlignment:=xlTop;ExcelWorkSheet1.cells.Item[nowhangi+1,2]:='全宗号';ExcelWorkSheet1.cells.Item[nowhangi+1,3]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi+1,3].font.size:=12;ExcelWorkSheet1.cells.Item[nowhangi+1,3].Font.Bold:=True;ExcelWorkSheet1.cells.Item[nowhangi+1,3].Orientation:=xlVertical;ExcelWorkSheet1.cells.Item[nowhangi+1,3].VerticalAlignment:=xlTop;ExcelWorkSheet1.cells.Item[nowhangi+1,3]:='目录号';//加入分页符号if(jilushu div strtoint(edit14.Text)>0)thenbeginCell1:=ExcelWorksheet1.Cells.Item[nowhangi,11];ExcelWorksheet1.VPageBreaks.Add(Cell1);ExcelWorksheet1.HPageBreaks.Add(Cell1);end;nowhangi:=nowhangi+2;end;//打印查询数据ExcelWorkSheet1.cells.Item[nowhangi,1].RowHeight:=60;ExcelWorkSheet1.cells.Item[nowhangi,1]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,1].font.size:=strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi,1].WrapText:=True;ExcelWorkSheet1.cells.Item[nowhangi,1]:=inttostr(jilushu);ExcelWorkSheet1.cells.Item[nowhangi,2]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,2].WrapText:=True;ExcelWorkSheet1.cells.Item[nowhangi,2].font.size:=strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi,2]:=dm1.queryanjuan.fieldbyname('全宗号').asstring;ExcelWorkSheet1.cells.Item[nowhangi,3]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,3].WrapText:=True;ExcelWorkSheet1.cells.Item[nowhangi,3].font.size:=strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi,3]:=dm1.queryanjuan.fieldbyname('目录号').asstring;exceptend;dm1.queryanjuan.Next;nowhangi:=nowhangi+1;end;end;try//插入页码ExcelWorkSheet1.PageSetup.RightHeader:='&9第&P页共&N页';exceptshowmessage('您可能没有安装打印机');end;for i:=1to nowhangi-1do//画单元格边框if taoda.Checked thenbeginwith ExcelApplication1.Range['A'+inttostr(i),'J'+inttostr(i)].Borders dobeginLineStyle:=xlContinuous;Weight:=xlThin;ColorIndex:=xlAutomatic;end;end;ExcelWorkBook1.SaveCopyAs(GetCurpath+'temp.xls');ExcelApplication1.DisplayAlerts[LCID]:=False;ExcelApplication1.Quit;ExcelWorksheet1.Disconnect;ExcelWorkbook1.Disconnect;ExcelApplication1.Disconnect;end;procedure TfrmMain.DoAdoSql(CurADODS:TADODataSet;SSql:string); varoldcur:tcursor;beginsb1.Panels[0].Text:='正在查询数据……';//sb1:Tstatusbar控件sb1.Refresh;oldcur:=Screen.Cursor;screen.cursor:=crHourGlass;tryif CurADODS.Active=true then CurADODS.Close;mandText:=SSql;CurADODS.Open;finallyscreen.Cursor:=oldcur;end;end;。
怎么在delphi中读取Excel数据(各种详细操作)转( 一) 使用动态创建的方法首先创建Excel 对象,使用ComObj :VarExcelApp : 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 ] := '' 隶书'' ;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.拷贝整个工作表:ed.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 ThenExcelApp.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。
DEPHI操作EXCEL的例子var Form1: TForm1;ExcelApp: Variant;implementation{$R*.dfm}procedure TForm1.FormCreate(Sender: TObject);beginExcelApp := CreateOleObject( …Excel.Application‟ );end;procedure TForm1.Button1Click(Sender: TObject);begin//E xcelApp.WorkBooks.Open(…c:\1.xls‟ );ExcelApp.WorkBooks.Open(ExtractFileDir(application.ExeName)+‟\2.xls‟);ExcelApp.Visible := True;end;procedure TForm1.Button2Click(Sender: TObject);beginexcelapp.workbooks.close;end;procedure TForm1.Button3Click(Sender: TObject);beginExcelApp.ActiveWorkBook.Sheets['Sheet2'].Selectend;procedure TForm1.Button4Click(Sender: TObject);beginexcelapp.activeworkbook.sheets[edit1.Text].select;excelapp.activeworkbook.sheets[edit1.Text].range[edit2.Text].select;edit3.Text :=excelapp.ActiveCell.value;//取公式excelapp.ActiveCell.FormulaR1C1//取值excelapp.ActiveCell.valueend;procedure TForm1.Button5Click(Sender: TObject);beginmemo1.Clear;excelapp.activeworkbook.sheets[edit4.Text].select;excelapp.activeworkbook.sheets[edit4.Text].range[edit5.Text].select;memo1.Lines.Add(…字体:‟+);ifnot VarIsNull(excelapp.Selection.Font.size) thenmemo1.Lines.Add(…字号:‟+inttostr(excelapp.Selection.Font.size));memo1.Lines.Add(…字形:‟+excelapp.Selection.Font.FontStyle);ifnot VarIsNull(excelapp.Selection.Font.Underline) thenmemo1.Lines.Add(…下划线:‟+inttostr(excelapp.Selection.Font.Underline));ifnot VarIsNull(excelapp.Selection.Font.ColorIndex) thenmemo1.Lines.Add(…字体颜色:‟+inttostr(excelapp.Selection.Font.ColorIndex)); ifnot VarIsNull(excelapp.Selection.Interior.ColorIndex) thenmemo1.Lines.Add(…填充颜色:‟+inttostr(excelapp.Selection.Interior.ColorIndex));ifnot VarIsNull(excelapp.Selection.HorizontalAlignment) thenmemo1.Lines.Add(…文本水平对齐方式:‟+inttostr(excelapp.Selection.HorizontalAlignment));ifnot VarIsNull(excelapp.Selection.VerticalAlignment) thenmemo1.Lines.Add(…文本垂直对齐方式:‟+inttostr(excelapp.Selection.VerticalAlignment));ifnot VarIsNull(excelapp.Selection.MergeCells) thenm emo1.Lines.Add(…合并单元格:‟+inttostr(excelapp.Selection.MergeCells));ifnot VarIsNull(excelapp.Selection.WrapText) thenmemo1.Lines.Add(…自动换行:‟+inttostr(excelapp.Selection.WrapText));// 1: Left, 2: Right, 3: Top, 4: bottom// 5: \, 6: / (斜线)// 7: Left, 8: Top, 9: bottom, 10: Right (不包括内部单元格)// 11, 12 , 内部单元格线条(分别是竖线和横线,12我用了没效果)ifnot VarIsNull(excelapp.Selection.Borders[1].LineStyle) thenmemo1.Lines.Add(…区域活动单元格左边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[1].LineStyle)+‟:'+inttostr(exce lapp.Selection.Borders[ 1].Weight)+‟:'+inttostr(excelapp.Selection.Borders[1].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[2].LineStyle) thenmemo1.Lines.Add(…区域活动单元格右边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[2].LineStyle)+‟:'+inttost r(excelapp.Selection.Borders[ 2].Weight)+‟:'+inttostr(excelapp.Selection.Borders[2].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[3].LineStyle) thenmemo1.Lines.Add(…区域活动单元格上边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[3].LineStyle)+‟:'+i nttostr(excelapp.Selection.Borders[ 3].Weight)+‟:'+inttostr(excelapp.Selection.Borders[3].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[4].LineStyle) thenmemo1.Lines.Add(…区域活动单元格下边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[4].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 4].Weight)+‟:'+inttostr(excelapp.Selection.Borders[4].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[5].LineStyle) thenmemo1.Lines.Add(…区域左右斜边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[5].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 5].Weight)+‟:'+inttostr(excelapp.Selection.Borders[5].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[6].LineStyle) thenmemo1.Lines.Add(…区域右左斜边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[6].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 6].Weight)+‟:'+inttostr(excelapp.Selection.Borders[6].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[7].LineStyle) thenmemo1.Lines.Add(…区域左边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[7].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 7].Weight)+‟:'+inttostr(excelapp.Selection.Borders[7].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[8].LineStyle) thenmemo1.Lines.Add(…区域上边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[8].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 8].Weight)+‟:'+inttostr(excelapp.Selection.Borders[8].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[9].LineStyle) thenmemo1.Lines.Add(…区域下边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[9].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders[ 9].Weight)+‟:'+inttostr(excelapp.Selection.Borders[9].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[10].LineStyle) thenmemo1.Lines.Add(…区域右边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[10].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders [10].Weight)+‟:'+inttostr(excelapp.Selection.Borders[10].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[11].LineStyle) thenmemo1.Lines.Add(…区域内部垂直边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[11].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders [11].Weight)+‟:'+inttostr(excelapp.Selection.Borders[11].ColorIndex));ifnot VarIsNull(excelapp.Selection.Borders[12].LineStyle) thenmemo1.Lines.Add(…区域内部水平边框(线性:大小:颜色):‟+inttostr(excelapp.Selection.Borders[12].LineStyle)+‟:'+inttostr(excelapp.Selection.Borders [12].Weight)+‟:'+inttostr(excelapp.Selection.Borders[12].ColorIndex));memo1.Lines.Add(…数字类型:‟+excelapp.Selection.NumberFormatLocal);memo1.Lines.Add(…行高:‟+inttostr(excelapp.Selection.Ro wHeight));memo1.Lines.Add(…列宽:‟+inttostr(excelapp.Selection.ColumnWidth));memo1.Lines.Add(…工作表名称:‟+excelapp.activeworkbook.sheets[edit4.Text].name);end;procedure TForm1.Button6Click(Sender: TObject);beginmemo2.Clear;excelapp.activeworkbook.sheets[edit6.Text].select;memo2.Lines.Add(…图表标题:‟+excelapp.sheets[edit6.Text].ChartObjects[1].chart.ChartTitle.Characters.Text);end;procedure TForm1.Button7Click(Sender: TObject);beginExcelApp.ActiveWorkbook.Sheets['Sheet3'].Select;ExcelApp.Acti veWorkbook.PivotCaches.Add(1,‟Sheet1!R1C2:R5C4′).CreatePivotTable(…[1.xls]S heet3!R2C1′,‟数据透视表1′);ExcelApp.ActiveWorkbook.ShowPivotTableFieldList :=True;ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…姓名‟).Orientation:=1; ExcelApp.Active Sheet.PivotTables(…数据透视表1′).PivotFields(…姓名‟).Position:=1; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…语文‟).Orientation:=2; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…语文‟).Position:=1; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…数学‟).Orientation:=2; ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…数学‟).Position:=1;ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).DisplayImmediateItems:=True;ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).AddDataField(ExcelApp.ActiveSheet.PivotTables(…数据透视表1′).PivotFields(…语文‟),…求和项:语文‟,-4157);//说明,对于宏录制的代码中的,xlRowField ,xlColumnField ,xlSum没有相应的说明,//可以EXCEL的宏中调试时,跟踪出相关的值如xlSum=-4157,其它的根据要求,自己跟踪//以下是录制的宏命令,以供参考{Sub Macro1()……Macro1 Macro宏由MS User 录制,时间: 2006-5-19…ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=_“Sheet1!R1C2:R5C4″).CreatePivotTable TableDestination:=”", TableName:= _“数据透视表1″,DefaultVersion:=xlPivotTableVersion10ActiveSheet.PivotTableWizardTableDestination:=ActiveSheet.Cells(3, 1)ActiveSheet.Cells(3, 1).SelectWithActiveSheet.PivotTables(“数据透视表1″).PivotFields(“姓名”).Orientation =xlRowField.Position = 1End WithWithActiveSheet.Piv otTables(“数据透视表1″).PivotFields(“语文”).Orientation =xlColumnField.Position = 1End WithWithActiveSheet.PivotTables(“数据透视表1″).PivotFields(“数学”).Orientation =xlColumnField.Position = 1End WithRa nge(“D8″).SelectActiveSheet.PivotTables(“数据透视表1″).AddDataField ActiveSheet.PivotTables(“数据透视表1″ _).PivotFields(“语文”), “求和项:语文”,xlSumRange(“C13″).SelectEndSub}end;。
下面是我写的通用文档微机管理系统的打印部分原代码,包括合并execl单元格,加入分页符号,设置行高,列宽,设置execl页头,设置每页记录数,画单元格边框,调用execl模板等等procedure TfrmMain.Button3Click(Sender:TObject);//动态打印excel报表vartiaojian:string;//tiaojian为一个sql查询语句,全宗号,目录号,起始日期为一数据库字段begintiaojian:=';if Edit7.Text<>'thenbegintiaojian:=tiaojian+'(全宗号='+EDit7.Text+')and';end;if Edit8.Text<>'thenbegintiaojian:=tiaojian+'(目录号='+Edit8.Text+')and';end;if Edit9.Text<>'thenbegintiaojian:=tiaojian+'(起始日期>='+Edit9.Text+')and';endelse tiaojian:=tiaojian+'(起始日期>=0)and';if Edit10.Text<>'thenbegintiaojian:=tiaojian+'(起始日期<='+Edit10.Text+')and';end;tiaojian:=copy(tiaojian,1,length(tiaojian)-3);//tiaojian为一个sql查询语句Printanjuan(tiaojian);//调用打印过程ShellExecute(Handle,'Open',PChar(GetCurpath+'temp.xls'),nil,nil,sw_shownormal);//调用excel查看生成的文件ProgressBar1.Position:=0;//ProgressBar1为一个进程条控件end;procedure TfrmMain.Printanjuan(tiaojiao:string);varnowhangi,i,jilushu,LCID:integer;//nowhangi当前execl的所在行,jilushu当前的记录位置ssql,PathName:string;oldcur:tcursor;ExcelApplication1:TExcelApplication;ExcelWorkbook1:TExcelWorkbook;ExcelWorkSheet1:TExcelWorksheet;xl,Cell1:olevariant;beginLCID:=LOCALE_USER_DEFAULT;if FileExists(GetCurpath+'temp.xls')then//删除动态生成的临时temp.xls文件tryDeleteFile(GetCurpath+'temp.xls');exceptend;ssql:=';//执行sql查询ssql:='select*from mainanjuan where('+tiaojiao+')order by系统编号'; doadosql(dm1.queryanjuan,ssql);begintryExcelApplication1:=TExcelApplication.Create(Self);ExcelWorkbook1:=TExcelWorkbook.Create(Self);ExcelWorkSheet1:=TExcelWorksheet.Create(Self);exceptshowmessage('对不起,您没有安装Excel2000!');abort;end;end;ExcelApplication1.Connect;ExcelApplication1.Workbooks.Add(null,0);//如果调用一个模板,改动该句如://ExcelApplication1.Workbooks.Add('c:\zichang.xls',0);ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]); ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1]as_WorkSheet); //写入execlProgressBar1.Position:=5;if dm1.queryanjuan.RecordCount>0thenbegin//设置列宽,行高nowhangi:=1;ExcelApplication1.Range['A1','A1'].ColumnWidth:=3.5;ExcelApplication1.Range['B1','B1'].ColumnWidth:=3.5;ExcelApplication1.Range['C1','C1'].ColumnWidth:=3.5;ExcelApplication1.Range['D1','D1'].ColumnWidth:=8;ExcelApplication1.Range['E1','E1'].ColumnWidth:=20;ExcelApplication1.Range['F1','F1'].ColumnWidth:=8.75;ExcelApplication1.Range['G1','G1'].ColumnWidth:=8.75;ExcelApplication1.Range['H1','H1'].ColumnWidth:=3.0;ExcelApplication1.Range['I1','I1'].ColumnWidth:=3.0;ExcelApplication1.Range['J1','J1'].ColumnWidth:=3.0;//设置每页的记录数目for jilushu:=1to(dm1.queryanjuan.RecordCount)dobegin//ProgressBar1为一个进程条控件ProgressBar1.Position:=(jilushu*100)div(dm1.queryanjuan.RecordCount);tryif jilushu mod strtoint(edit14.Text)=1then//edit14.Text的值为一个数字,表示每页的记录数目begin//打印每页的页头ExcelApplication1.Range['A'+inttostr(nowhangi),'J'+inttostr(nowhangi)].Merge(xl);//合并execl单元格ExcelWorkSheet1.cells.Item[nowhangi,1]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,1].font.size:=24;ExcelWorkSheet1.cells.Item[nowhangi,1].RowHeight:=32;ExcelWorkSheet1.cells.Item[nowhangi,1]:='案卷目录';ExcelWorkSheet1.cells.Item[nowhangi,1].HorizontalAlignment:=xlCenter;ExcelWorkSheet1.cells.Item[nowhangi+1,1]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi+1,1].font.size:=12;ExcelWorkSheet1.cells.Item[nowhangi+1,1].Font.Bold:=True;ExcelWorkSheet1.cells.Item[nowhangi+1,1].Orientation:=xlVertical;ExcelWorkSheet1.cells.Item[nowhangi+1,1].VerticalAlignment:=xlTop;ExcelWorkSheet1.cells.Item[nowhangi+1,1]:='顺序号';ExcelWorkSheet1.cells.Item[nowhangi+1,2]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi+1,2].font.size:=12;ExcelWorkSheet1.cells.Item[nowhangi+1,2].Font.Bold:=True;ExcelWorkSheet1.cells.Item[nowhangi+1,2].Orientation:=xlVertical;ExcelWorkSheet1.cells.Item[nowhangi+1,2].VerticalAlignment:=xlTop;ExcelWorkSheet1.cells.Item[nowhangi+1,2]:='全宗号';ExcelWorkSheet1.cells.Item[nowhangi+1,3]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi+1,3].font.size:=12;ExcelWorkSheet1.cells.Item[nowhangi+1,3].Font.Bold:=True;ExcelWorkSheet1.cells.Item[nowhangi+1,3].Orientation:=xlVertical;ExcelWorkSheet1.cells.Item[nowhangi+1,3].VerticalAlignment:=xlTop;ExcelWorkSheet1.cells.Item[nowhangi+1,3]:='目录号';//加入分页符号if(jilushu div strtoint(edit14.Text)>0)thenbeginCell1:=ExcelWorksheet1.Cells.Item[nowhangi,11];ExcelWorksheet1.VPageBreaks.Add(Cell1);ExcelWorksheet1.HPageBreaks.Add(Cell1);end;nowhangi:=nowhangi+2;end;//打印查询数据ExcelWorkSheet1.cells.Item[nowhangi,1].RowHeight:=60;ExcelWorkSheet1.cells.Item[nowhangi,1]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,1].font.size:=strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi,1].WrapText:=True;ExcelWorkSheet1.cells.Item[nowhangi,1]:=inttostr(jilushu);ExcelWorkSheet1.cells.Item[nowhangi,2]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,2].WrapText:=True;ExcelWorkSheet1.cells.Item[nowhangi,2].font.size:=strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi,2]:=dm1.queryanjuan.fieldbyname('全宗号').asstring;ExcelWorkSheet1.cells.Item[nowhangi,3]:=fontselectbox.FontName;ExcelWorkSheet1.cells.Item[nowhangi,3].WrapText:=True;ExcelWorkSheet1.cells.Item[nowhangi,3].font.size:=strtoint(Edit11.text);ExcelWorkSheet1.cells.Item[nowhangi,3]:=dm1.queryanjuan.fieldbyname('目录号').asstring;exceptend;dm1.queryanjuan.Next;nowhangi:=nowhangi+1;end;end;try//插入页码ExcelWorkSheet1.PageSetup.RightHeader:='&9第&P页共&N页';exceptshowmessage('您可能没有安装打印机');end;for i:=1to nowhangi-1do//画单元格边框if taoda.Checked thenbeginwith ExcelApplication1.Range['A'+inttostr(i),'J'+inttostr(i)].Borders dobeginLineStyle:=xlContinuous;Weight:=xlThin;ColorIndex:=xlAutomatic;end;end;ExcelWorkBook1.SaveCopyAs(GetCurpath+'temp.xls');ExcelApplication1.DisplayAlerts[LCID]:=False;ExcelApplication1.Quit;ExcelWorksheet1.Disconnect;ExcelWorkbook1.Disconnect;ExcelApplication1.Disconnect;end;procedure TfrmMain.DoAdoSql(CurADODS:TADODataSet;SSql:string); varoldcur:tcursor;beginsb1.Panels[0].Text:='正在查询数据……';//sb1:Tstatusbar控件sb1.Refresh;oldcur:=Screen.Cursor;screen.cursor:=crHourGlass;tryif CurADODS.Active=true then CurADODS.Close;mandText:=SSql;CurADODS.Open;finallyscreen.Cursor:=oldcur;end;end;。