2022年delphi读取电子表格 .pdf
delphi7读取 excel 我有一个excel 文件,第一行是某项目预算表,第二行有分公司、项目名,第三行是材料、数量、 单价、金额等列标题,往下就是具体的数据,请问我怎么读取哪些具体数据呀?我以前见过一个软件,可以在表格中打开excel 文件,然后可以删除excel 的前后几行,只留下规则的中间部分 (实际的excel 文件中这几行并没删除),不知道怎么可以实现这样的功能用 ole 可以解决用 ole 读 excel :会读了后,你自己处理一下要读的数据就行了var I, J: Integer; MaxRow, MaxCol: Integer; List, Strs: TStringList; ExcelApp, Sheet: Variant; OldTime: TDateTime; begin List := TStringList.Create; Strs := TStringList.Create; / 创建一个excel 的 ole 对象ExcelApp := CreateOleObject( Excel.Application ); try / 打开一个excel 文件ExcelApp.WorkBooks.Open(Edit1.Text); List.BeginUpdate; try / 设置工作区ExcelApp.WorkSheets1.Activate; Sheet := ExcelApp.WorkSheets1; / 有数据的区域的行数和列数MaxRow := Sheet.UsedRange.Rows.count - 1; MaxCol := Sheet.UsedRange.Columns.count; for I := 2 to MaxRow do begin Strs.Clear; for J := 1 to MaxCol do begin / 获得 excel 的数据第i 行,第 j 列单元格内的数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - Strs.Add(Sheet.Cellsi, j.Value); end; List.Add(Strs.CommaText); end; finally / 关闭工作区ExcelApp.WorkBooks.Close; List.EndUpdate; end; finally / 释放 ole 对象ExcelApp.Quit; List.Free; Strs.Free; end; end; 用 delphi 提供的 excelapplication读,在 servers 选项卡里var I, J: Integer; MaxRow, MaxCol: Integer; List, Strs: TStringList; sheet: ExcelWorksheet; OldTime: TDateTime; XlsCell: string; begin List := TStringList.Create; Strs := TStringList.Create; / 连接ExcelApplication1.Connect; try ExcelApplication1.Visible1 := False; / 打开一个excel 文件,文件名是edit.text ExcelApplication1.Workbooks.Open(Edit1.Text, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - EmptyParam, EmptyParam, 0); List.BeginUpdate; try /ExcelApplication1.WorkSheets1.Activate; Sheet := ExcelApplication1.WorkSheets1 as ExcelWorksheet; MaxRow := Sheet.UsedRange1.Rows.count - 1; MaxCol := Sheet.UsedRange1.Columns.count; for I := 2 to MaxRow do begin Strs.Clear; for J := 1 to MaxCol do begin XlsCell := ColRowNumToStr(J, I); Strs.Add(Sheet.RangeXlsCell, XlsCell.Text); end; List.Add(Strs.CommaText); end; finally ExcelApplication1.WorkBooks.Close(1); List.EndUpdate; end; finally ExcelApplication1.Disconnect; List.Free; Strs.Free; end; end; 还有一些第三方的表格控件可以直接读取excel 的数据的网上搜下,这方面东西太多了名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - Delphi中使用 ADO 连接 Excel有感By panther666 今天在 Delphi中使用 ADO 连接 Excel( 以前在一本书看过,复习一下-_-!),有所收获,不敢独享。第一部分:1. 设置 ADOConnection的 ConnectionString属性的 OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider(这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件 ), 按 下一步 按钮2. 选择数据库名称。注意:Excel的扩展名是 *.xls,而默认文件类型是Microsoft Access 数据库 (*.mdb), 我们就选择 全部文件 (*.*)吧,接着选择我们要连接的Excel文件咯!如果在当前路径,就直接填2007.xls。这时先别慌按 测试连接 按钮 ,不然会出现错误对话框的。可以试试看,了解一下_ 3. 在 所有 选项卡中找到Extended Properties,双击它或者按 编辑值 按钮,设置Extended Properties为Excel 8.0 。4. 我们返回 连接 选项卡,按 测试连接 按钮。测试连接成功!_ 最后,设置完成后的ConnectionString中的各项参数为:Provider=Microsoft.Jet.OLEDB.4.0 Data Source=2007.xls / 因为在当前路径Extended Properties=Excel 8.0 Persist Security Info=False 第二部分:接着就用ADOTable,ADODataSet和 ADOQuery连接到刚才的ADOConnection,当然你可以直接设置ADOTable,ADODataSet或 ADOQuery的 ConnectionString属性。1. ADOTable设置:a. ADOTable的 TableName属性值:系统自动生成Excel的 Sheet1$,Sheet2$和Sheet3$。直接 Active设置成 true, 系统会报告SQL 语句格式错误等信息。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - b. 找到 TableDirect属性,设置为True 。因为,访问Excel文件是直接的数据文件访问,不是通过SQL 语句来操作游标访问的。接着将Active设置成 true 。成功了!_ c. 可以不使用TableDirect属性,将TableName属性中的Sheet1$,Sheet2$和Sheet3$分别改成 Sheet1$,Sheet2$和 Sheet3$。对,就是加 就行了。2. ADODataSet设置:a. 只需要将 CommandType属性设置为cmdTableDirect,选择工作表, Active设置成 true就成功了。b. 也可以将CommandType属性设置为cmdTable,将 CommandText属性中改成Sheet1$,Sheet2$和 Sheet3$。3. ADOQuery设置:SQL 属性如下:select * from sheet1$ 总结:复习以前所学的,尝试新的连接方法,有益于加深记忆。我发现工作表名后面都要多加一个$ 符号,还有就是打开ADOTable, ADODataSet或者 ADOQuery以后,它们的 CursorType自动变成ctStatic。应用环境: Delphi7.0 Win2003企业版名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - Delphi控制 Excel自动生成报表引言数据报表作为企事业单位上报和下达的重要信息载体,随着信息化建设的不断推进,在实际的工作中得到了前所未有的应用。因此, 数据报表已经成为管理信息系统中重要的一项功能,并且,由于数据的多样性和统计信息的增加,数据报表的系统实现变得越来越复杂。Delphi是一个高效的可视化数据库管理信息系统开发工具,.但是 Delphi开发环境中提供的报表控件在制作复杂报表时显得不够理想,不管是以前版本提供的Quick Report控件组, 还是 Delphi 7提供的 Rave控件组, 都不能让用户对生成的报表进行改动,且程序控制很难实现。Excel作为现代办公常用的电子表格制作工具,以它的易操作性和实用性,得到了各行业办公人员的青睐。本文根据实际应用实践,介绍利用Delphi编程控制Excel生成报表的各种方法。Delphi控制 Excel的方法1 创建 Excel文件要在 Delphi中控制 Excel ,就必须用到OLE 自动化。现在一般采用OLE2来创建 OLE 对象,当激活一个OLE 对象时,服务器程序仅在容器程序内部激活,这就是所谓的“ 就地激活 ”(in-place activation)。创建 Excel文件时,先创建一个OLE 对象,然后在对象中建立工作表worksheet,如函数createExcel所示:function createExcel:variant; var v:variant; sheet:variant; begin v:=createoleobject(Excel.Application);/创建 OLE 对象v.visible:=true; v.workbooks.add(-4167); /添加工作表v.workbooks1.sheets1.name:=test; sheet:=v.workbooks1.sheetstest; Result := v; end; 2 数据表格控制Excel表格的控制, 主要包括数据的导入、修改; 单元格的合并、 边框的控制; 表格的复制、粘贴等。当报表格式一定的情况下,表格的复制、粘贴显得尤为重要,这样,可以先制作一个文件模板,然后按照实际需要输出多页报表即可。( 1)数据的导入(importData)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - procedure importData; var I,j:integer; v:variant; begin v:=createExcel; /创建 Excel 文件 test for I:=0 to maxcolumn do begin for j:=0 to maxrow do v.workbooks1.sheets1.cellsI,j:=I*j; /导入数据end; end; ( 2)单元格的合并、边框的控制(lineStylecontrol)单元格的合并, 是在选定合并范围的情况下进行的。边框控制可以操作边框线条的是否显示。其他方式的控制,可以仿照下面过程进行。procedure lineStylecontrol; var v,sheet,range:variant; begin v:=createExecl; sheet:= v.workbooks1.sheets1; range:=sheet.rangesheet.cells1,1,sheet.cells39,30;/选定表格range.select; range.merge; /合并单元格range.borders.linestyle:=xlcontinuous; /置边框线可见range.font.size:=9; /改变表格内文本字体大小end; ( 3)表格的复制与粘贴(copyandPaste)procedure copyandPaste; var v,sheet,range:variant; begin v:=createExecl; sheet:= v.workbooks1.sheets1; range:=sheet.rangesheet.cells1,1,sheet.cells39,30; range.select; /选定要复制的表格range.copy; /复制选定的表格sheet.rangesheet.cells40,1,sheet.cells40,1.select; /选择要粘贴的位置sheet.paste; / 粘贴表格end; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 3 文件的保存文件保存是在创建文件的基础上进行的,过程saveFile说明了文件保存过程中应该注意的问题:procedure saveFile; var sheet,v:variant; begin v:=createExcel; if savedialog.execute then begin v.workbooks1.saveas(savedialog.FileName);/保存文件v.workbooks1.close; /关闭工作表v.quit; /关闭 Excel v := unassigned; end; end; 报表制作应注意的问题( 1)报表格式的选择报表格式的选择对信息系统报表的实现方法起着决定性的影响。如果在报表的格式要求比较严格的情况下, 应当采用模板的方式产生报表。由于模板在数据导入之前就已经按照标准制定好,所以只要在程序中控制模板的复制与粘贴,然后编程实现数据输入指定位置即可。而对于报表格式多变的情况,由于数据的不同,需要合并单元格或者控制边框,可以直接在程序中自动控制报表的生成。( 2)打印对于Excel报表的打印,最好不要在程序中进行控制,因为报表往往需要签字或者进行审查,有许多报表都包含平面图或示意图,为了有效的控制打印质量,最好通过程序控制输出或显示 Excel文件, 以便修改; 另一个重要的原因是Excel具有强大的排版功能,而这正是选择Excel导出报表的重要原因。( 3)报表时间和表头报表时间要有用户可以控制的输出。表头的制作要在事先做好格式,控制输出时, 只改动那些诸如上报单位、下达单位、负责人等数据,这样既保证了系统的效率,又不失其实用性。结论名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 用 Delphi控制 Excel来完成数据库管理信息系统的数据报表功能,是Delphi制作复杂报表的最佳选择,因为 Delphi不但能控制数据的导出与导入,而且可以完成当前Excel应用中的大部分功能。如果深入研究Visual Basic for Application(VBA)就可以制作出符合实际需要的各种 Delphi控制 Excel 的控件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -