Foxtable(狐表)用户栏目专家坐堂 → 利用模板分批输出


  共有3712人关注过本帖树形打印复制链接

主题:利用模板分批输出

帅哥哟,离线,有人找我吗?
cdwanghc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:819 威望:0 精华:0 注册:2013/10/15 13:25:00
利用模板分批输出  发帖心情 Post By:2013/11/26 10:26:00 [显示全部帖子]

请教:如何利用模板文件实现分批输出?(EXCEL报表)

数据表有3000条记录,每条记录都是一个产品标签的内容。

现在希望每次输出其中的100条记录到EXCEL报表中,分多次输出全部的3000条记录。

 


 回到顶部
帅哥哟,离线,有人找我吗?
cdwanghc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:819 威望:0 精华:0 注册:2013/10/15 13:25:00
  发帖心情 Post By:2013/11/26 10:49:00 [显示全部帖子]

这个问题还是11月14号所求助问题的继续(麻烦大侠参考当时求助情况)。

数据表每条记录都有图片,记录数多了就不能正常输出,少了就可以正常输出。

11月14号时,图片文件有5M大小,最多可以正常输出30条记录左右。现在图片文件500K大小,最多可以正常输出100条记录左右,再多就不行了。

所以想试试分批输出,每输出一次做一次保存,再接着输出下一次,直至数据表全部记录输出完成。


 回到顶部
帅哥哟,离线,有人找我吗?
cdwanghc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:88 积分:819 威望:0 精华:0 注册:2013/10/15 13:25:00
  发帖心情 Post By:2013/11/26 12:02:00 [显示全部帖子]

谢谢指点。

刚才试了一下,还是不行。

问题是不是出在Book.Build() 生成细节区上?代码:

Dim cnt As Integer = 100 '每次打印的行数
For i As Integer = 0 To Tables("订单").Rows.count -1 Step cnt
    Dim ed As Integer = math.min(i + cnt - 1, Tables("订单").Rows.count -1)
    Tables("订单").Select(i,0,ed,0)  '选定本次打印的100行
    
    Dim Book As New  XLS.Book(ProjectPath &  "Attachments\模版.xls") '开始基于模版打印
    Dim fl As  String = ProjectPath  &  "Reports\模版.xls"
    Book.Build() '生成细节--->这里生成细节区所对应的数据表任然是含有3000条记录的大表,所以输出时总是显示爆内存。如果只是针对选定100条记录的小表生成细节区,是不是应该没有问题?能不能考虑动态修改打印条件,每次按顺序生成100条记录的细节区,输出,保存,最后再将全部输出的EXCEL报表合并成一个报表?请指点。先谢谢了。
    Book.Save(fl) '保存工作簿
    Dim Proc As  New  Process  '打开工作簿
    Proc.File = fl
    Proc.Start()
    proc.WaitForExit  '等到关闭本次生成的excel报表文件才打印下一个100行
Next

 


 回到顶部