`
yesjavame
  • 浏览: 659433 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Delphi使用server组件控制excel的一点经验

阅读更多

近来的项目报表全部做成excel文件,方便很多。可惜的是delphi中的server组件没有帮助,只能靠网上的资料和自己的摸索。经过一段时间,积累了一点经验,写出来希望对大家有所帮助。近来在网上搜索到TXLSRead and TXLSWrite两个组件操作excel更加方便,但是还没研究过,大家有兴趣可以研究一下。

1、 Connect问题

对微软真实又爱又恨,爱的是很多东西很方便易用,恨的是慢和老是出现莫名其妙的错误。不明白为什么ExcelApplication1.Connect连接那么慢,而且会影响窗口的显示。所以在执行ExcelApplication1.Connect之前最好加一句Application.ProcessMessages

2、 ExcelWorksheet1.ConnectTo的问题

要连接上一个worksheet,需要三个步骤:

ExcelApplication1.Connect

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));

ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _worksheet);

第一个步骤是连接到Excel

第二个步骤是创建新的excel,并将ExcelWorkbook1组件连接到这个新的excel,如果是打开一个已存在的excel文件请用:

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open(excel文件名及路径,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0));

第三个步骤就是ExcelWorksheet1组件连接到要读写的工作表,比较容易忽略的就是红色字部分(as _worksheet),如果没有,编译时是肯定通不过的。

3、 保存文件

保存文件根据网上的资料测试过不少,可惜有些不行,老编译不过。可能是自己没仔细研究,代码写得不对。现在只用以下这句:

ExcelApplication1.ActiveWorkBook.Close(True,CurrentPath+CurrentFile,EmptyParam, 0);

4、 设置单元格格式为文本

Excel的一个问题就是将000001这些文本也当成数字了,最后显示为1,所以要设置单元格的格式为文本才行。在大富翁论坛找到了答案,就是:

Cells.Item[行号,列号].NumberFormatLocal:='@';

还有一种办法就是:ells.Item[行号,列号].style:='';

后面那个关键词找不到,用Normal不行,用Text也不行,找不到资料,也就没深究下去。

5、 获取工作簿中所有工作表

for i:=1 to ExcelWorkbook1.Sheets.Count do

begin

ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[i] as _WorkSheet);

cbList.Items.Add(ExcelWorksheet1.Name);

ExcelWorksheet1.Disconnect;

end;

6、 获取工作表中已经使用的行数和列数

获取列数并取得列标题(如果有标题行且是第一行)

ColCount:=ExcelWorksheet1.UsedRange[0].Columns.Count;

if ColCount>0 then

begin

for I:=1 to ColCount do

begin

ListString:=ExcelWorksheet1.UsedRange[0].Cells.Item[1,I];

ListString:=''+IntToStr(I)+''+ListString;

end;

end;

在这里要注意的地方就是一定要用变量保存信息,如果直接在循环中使用ExcelWorksheet1.UsedRange[0].Columns.Count,编译通过不了,下面获取标题行的值也是,直接使用也是不行。

获取行数:

RowCount:=ExcelWorksheet1.UsedRange[0].Rows.Count;

如果有标题行,别忘记将行数减1。循环时也要从第二行开始。

7、 参考文档

DelphiExcel的亲密接触 [王安鹏(anpengwang@263.net <chsdate year="2002" month="4" day="14" w:st="on" islunardate="False" isrocdate="False"></chsdate>2002/4/14]

链接:http://www.zahui.com/html/2/4846.htm

Delphi控制Excel2000心得 [tiexinliu (铁心刘) 2003-10-15 10:45:11]

链接:http://search.csdn.net/Expert/topic/2357/2357198.xml?temp=.6645929

分享到:
评论

相关推荐

    Delphi7组件应用实例

    第13章 Server组件页 13.1 Word和Excel程序对象 13.2 ToleServer组件 13.3 实例——在Delphi中操作Word 13.4 实例——使用TWordDocument组件连接Word自动化服务器 13.5 实例——建立与Excel连接 13.6 实例——...

    Delphi开发范例宝典目录

    实例191 在DELPHI中控制Word 246 实例192 带日志的程序 247 实例193 获取窗口文本 248 实例194 判断文件是否正在被使用 250 实例195 提取文件中的图标资源 251 实例196 在程序中调用.HLP文件 253 实例...

    DELPHI 表格控件DBGridEh史上最全使用资料(101页)

    一、 DBGridEh(增强型表格组件)功能详解.....................................................................4 二、应用实例.................................................................................

    80例上手Delphi7编程(完全版)+源码

     如何在Delphi中操作Excel  实现应用程序的文件拖放功能  将EXE文件转换成SWF文件  将SWF文件转换成EXE文件  文件捆绑  统计中英文字个数  06图形图像多媒体  实例一--艺术字效果  实例七---...

    Delphi导入EXECL导出SQL数据工具

    SMImport 组件包能够导入如下文件格式的数据 1. MS Excel spreadsheet (directly without OLE/DDE) 2. text delimited file 3. text fixed width file 4. XML file 5. HTML file 6. MS Access database 7. MS Word ...

    SOAOFFICE - 微软 OFFICE 中间件

    SOAOFFICE同时支持C/S方式的编程和其他支持ActiveX的容器,您可以在VB,Delphi以及C++ Builder中使用本中间件,快速创建C/S结构的应用。 SOAOFFICE中间件是一个国际化产品,支持多种界面语言:简体中文、繁体中文、...

    chilkat-9.5.0-python-3.6-x64.tar.gz

    Chilkat组件和库的示例代码 Android™示例 经典ASP示例 C范例 C ++范例 C#范例 Mono C#示例 .NET Core C#示例 C#UWP / WinRT示例 DataFlex示例 Delphi ActiveX示例 Delphi DLL范例 Visual FoxPro...

    NTKO文档在线编辑控件4.0.1.2

    14 版本控制功能 版本控制功能,能够让您对WORD和EXCEL文档有更多的控制。 15 支持强制痕迹保留 可以通过对控件编程,让用户只能在痕迹保留状态下工作;强制用户保留一切编辑痕迹。 16 支持手写签名和加密的电子...

    完全掌握加密解密实战超级手册.zip02

    61.2.2 在Delphi中建立和使用DLL文件 101.2.3 DLL文件的调用方法 121.3 设计与发布包组件 141.3.1 包组件概述 141.3.2 设计与发布包组件 151.3.3 安装与卸载包组件 171.4 解密与注册保护 191.4.1 解密方式 191.4.2 ...

    全球办公自动化系统V3.0全部源代码

    可以用Delphi的ClientDataSet组件的LoadFromFile及SaveToFile方法打开本文件读写编辑,文件内容可以在DBGrid中显示,采用DataSource来连接ClientDataSet和DBGrid. 8: 填写完成以上信息,直接安装直到完成。 ...

    完全掌握加密解密实战超级手册.z01

    2458.5 专家点拨:常见问题解答 247第9章 网络验证技术大放送 2489.1 实现Web服务器网络验证 2499.1.1 加密客户端 2499.1.2 控制本地计算机 2529.2 实现本地服务器验证 2569.2.1 加密客户端 2579.2.2 加密服务器端 ...

    滴答表格专业版 4.2.2

    您只需要一条语句即可实现与其它应用程序的数据交互,包括PDF、EXCEL、CSV、图片,同时您还可以精确导入EXCEL文件,支持单个和批量文件转换; 8.一流的技术支持服务 为了帮助新用户快速入门和老用户开发过程中的...

    滴答表格企业版 5.1.2

    您只需要一条语句即可实现与其它应用程序的数据交互,包括PDF、EXCEL、CSV、图片,同时您还可以精确导入EXCEL文件,支持单个和 批量文件转换; 一流的技术支持服务 为了帮助新用户快速入门和老用户开发过程中的...

    易语言程序免安装版下载

    注意:静态编译后的易语言EXE和DLL之间不能再共享“某些”句柄或资源,这一点和原动态连接时的程序行为不能保持一致,使用时请务必设法避免此类用法(MYSQL支持库我们作了特别处理)。 注意:静态编译后常量数据...

    滴答表格企业版3.8.2

    滴答可以支持ADO组件所支持的所有数据库,如SQLSERVER , ORACLE , ACCESS 以及其它ODBC; 2.多数据链接 一张滴答报表模板,支持设置多个数据链接,每个数据链接可以对应不同类型的数据库或ODBC甚至是EXCEL,也就是在一...

Global site tag (gtag.js) - Google Analytics