用excel做报表

wxh660 2014-05-19 02:49:12
有一个excel模板表格,用ole可以实现报表的复制和数据填充,但速度有点慢,有点受不了(有时有一千多张表)。我想改用adoconnection连接excel,现在可以实现一张表的数据填充,但因为有很多一样格式的表,搞了几天也无法实现在一个excel中把模板表格复制很多个。请问各路高手,怎样实现?(一个excel中打印很多相同格式、内容不同的表,内容可以从数据库中读出)。注:不要ole方法。
...全文
1087 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxh660 2014-06-05
  • 打赏
  • 举报
回复
请各位大神看看错在哪? procedure prmexcel; var mstr: TMemoryStream; fstr:TFileStream; modpath,savepath:string; begin modpath := ExtractFilePath(application.ExeName)+'1.xls'; //模板文件 savepath :=ExtractFilePath(application.ExeName)+'打印表.xls'; //建立新文件 fStr := TFileStream.Create(savePath, fmCreate); mstr := TMemoryStream.Create ; mstr.LoadFromFile(modpath); //导入模板文件到内存流 fStr.CopyFrom(mstr, 0); // 复制mstr流的全部到文件中 fstr.Seek(0,soFromEnd); //指针移到流的尾部 fstr.CopyFrom(mstr,0); //把内存流再次追加到原文件尾部 // showmessage(inttostr(fstr.Position)) ;//在这显示文件流指针的位置好像是改变了,但打开文件看还是只有一个表 mstr.Free; fStr.Free; end; 按我的理解,应该在打印表中有二个模板表格,通过跟踪指针位置,好像也是在二个表大小的尾部,看文件大小也是原来的二倍。但打开文件看,还是只有一个表,关闭后再看文件大小,又只有一个表的大小了。百思不得其解,恳请各位指点!
wxh660 2014-06-03
  • 打赏
  • 举报
回复
其实我不是一个软件工程师,只不过对delphi有一点爱好,没事的时候学一下。我一位很好的老同学是搞软件的,我看他的一个软件在打印时是用excel,我知道他用的是ole,特别慢,所以想试一下能不能改用其它方式。用ado进行数据导入导出excel,比较简单,就是这个打印中国式报表没法解决。
wxh660 2014-06-03
  • 打赏
  • 举报
回复
XLSReadWriteII我试过,有二个问题,一个是要收费的,另一个是做中国式报表好像也有困难
lyhoo163 2014-06-02
  • 打赏
  • 举报
回复
建议使用第三方控件,建议EXCEL报表,速度快。比如:XLSReadWriteII
wxh660 2014-06-01
  • 打赏
  • 举报
回复
自己顶上去了
wxh660 2014-05-24
  • 打赏
  • 举报
回复
是这个问题太难,还是delphi没人气了,怎么除了版主就没人理?唉!!! 自己用流摸索了几天,还是没有搞定: 一是怎么用流从xls中复制出一个sheet出来?用copy或save的方法都是复制出整个book. 二是怎么把复制出来的表格在一张表中循环追加? 三是怎么在没有列表头的情况下添加数据? 四是能不能在缓存中把数据添加好后,一起追加到表后面?
wxh660 2014-05-20
  • 打赏
  • 举报
回复
谢谢版主,能不能我先看一下?我常不在线,请发我的邮箱:wxh660@126.com
金卯刀 2014-05-20
  • 打赏
  • 举报
回复
nativeexcel本身就是用文件流的方式处理。如果你自己处理,需要分析excel文件格式——这可是一个巨大的工作量。有现成的为啥不用?!
wxh660 2014-05-20
  • 打赏
  • 举报
回复
是一个不规则的表格(也就是大家说的中国式表格),就一个标题和表格,并且有合并单元格。跟平时大家有的简历表有点相似。 我在想可不可以用流的方法做,正在学相关资料。
金卯刀 2014-05-19
  • 打赏
  • 举报
回复
引用 1 楼 Avan_Lau 的回复:
我之前做了一个通用的excel报表导出模块,也是事先用excel模版制作报表格式。 不过导出用的是NativeExcel,可快速导出数据。Ole太慢了。
这个报表模版,需要定义报表抬头区域、表头区域、明细区域;甚至可以支持动态表头数目。 也就是意味这模版中存在着约定的关键字。不知道你们是否也这样约定。
金卯刀 2014-05-19
  • 打赏
  • 举报
回复
我之前做了一个通用的excel报表导出模块,也是事先用excel模版制作报表格式。 不过导出用的是NativeExcel,可快速导出数据。Ole太慢了。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧