Foxtable(狐表)用户栏目专家坐堂 → [求助]Excel报表容量问题


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

主题:[求助]Excel报表容量问题

帅哥哟,离线,有人找我吗?
狐狸爸爸
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/16 15:42:00 [只看该作者]

以下是引用易服在2010-12-16 15:34:00的发言:

加上也不行的

 

Tables("xxx").Select(i, 0, i + 1369, tables("xxx").cols.count -1)

 


 


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/16 15:53:00 [只看该作者]

For i As Integer = 0 To Tables("申请表").Rows.Count -1 Step 1370
    With Tables("申请表")
        .Select(i, 0, i + 1369, .cols.count -1)
    End With
    Dim Book As New XLS.Book(ProjectPath & "Attachments\核实表.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\核实表.xls") '保存工作簿
    Dim Proc As New Process '打开工作簿
    Proc.File ="d:\My Documents\Reports\核实表.xls"
    Proc.Verb = "Print" '指定动作
    Proc.Start()
Next

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/16 16:09:00 [只看该作者]

For i As Integer = 0 To Tables("申请表").Rows.Count -1 Step 1370
    Tables("申请表").Select(i, 0, i + 1369, Tables("申请表").cols.count -1)
    Dim Book As New XLS.Book(ProjectPath & "Attachments\核实表.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\核实表.xls") '保存工作簿
    Dim Proc As New Process '打开工作簿
    Proc.File ="d:\My Documents\Reports\核实表.xls"
    Proc.Start()
Next

图片点击可在新窗口打开查看此主题相关图片如下:2010-12-16 16-05-46.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/16 16:18:00 [只看该作者]

For i As Integer = 0 To Tables("申请表").Rows.Count -1 Step 1370
    With Tables("申请表")
        .Select(i, 0, math.min(i + 1369,.rows.count -1), .cols.count -1)
    End With
    Dim Book As New XLS.Book(ProjectPath & "Attachments\核实表.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\核实表.xls") '保存工作簿
    Dim Proc As New Process '打开工作簿
    Proc.File ="d:\My Documents\Reports\核实表.xls"
    Proc.Verb = "Print" '指定动作
    Proc.Start()
Next

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/12/16 20:09:00 [只看该作者]

1、实在不懂:For i As Integer = 0 To Tables("申请表").Rows.Count -1 Step 1370 中的Step 1370,要那么长的步长吗?

两位解释一下。

 

2、为何要用select?循环时应定位于循环到的行吧(因楼主要每行打印一次):

Tables("申请表").position = i   

 

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/16 21:55:00 [只看该作者]

因为楼主说一次超过1370行就出错啊,所以一次打印1370行

 


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/17 9:52:00 [只看该作者]

已经实现了半自动:

先执行

If Forms("选项").Controls("ComboBox1").Value >"" AndAlso Forms("选项").Controls("ComboBox2").Value >"" Then
    For i As Integer = 0 To Tables("申请表").Rows.Count -1 Step 1370
        With Tables("申请表")
            .Select(i, 0, math.min(i + 1369,.rows.count -1), .cols.count -1)
        End With
        Dim Book As New XLS.Book(ProjectPath & "Attachments\登记表.xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("d:\My Documents\Reports\登记表.xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="d:\My Documents\Reports\登记表.xls"
        Proc.Start()
    Next
END IF


图片点击可在新窗口打开查看此主题相关图片如下:2010-12-17 9-22-21.png
图片点击可在新窗口打开查看

下面窗口弹出说明已经超过1370行(不超过不弹出),后面还有记录被选中没有生成报表

图片点击可在新窗口打开查看此主题相关图片如下:2010-12-17 9-17-43.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:2010-12-17 8-24-54.png
图片点击可在新窗口打开查看

接着执行


图片点击可在新窗口打开查看此主题相关图片如下:2010-12-17 9-18-45.png
图片点击可在新窗口打开查看

If Forms("选项").Controls("ComboBox1").Value >"" AndAlso Forms("选项").Controls("ComboBox2").Value >"" Then
    Dim Book As New XLS.Book(ProjectPath & "Attachments\登记.xls") '打开模板
    Book.Build() '生成细节区
    Book.Save("d:\My Documents\Reports\登记.xls") '保存工作簿
    Dim Proc As New Process '打开工作簿
    Proc.File ="d:\My Documents\Reports\登记.xls"
    Proc.Start()
END IF

 全部记录生成报表形成两个文件登记.xls  登记表.xls

上面的过程需要人工判断能不能来个全自动的

[此贴子已经被作者于2010-12-17 9:59:13编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/17 9:56:00 [只看该作者]

加上一行,这样关闭本次生成的报表,才会生成下一个,不会带来冲突:

 

If Forms("选项").Controls("ComboBox1").Value >"" AndAlso Forms("选项").Controls("ComboBox2").Value >"" Then
    For i As Integer = 0 To Tables("申请表").Rows.Count -1 Step 1370
        With Tables("申请表")
            .Select(i, 0, math.min(i + 1369,.rows.count -1), .cols.count -1)
        End With
        Dim Book As New XLS.Book(ProjectPath & "Attachments\登记表.xls") '打开模板
        Book.Build() '生成细节区
        Book.Save("d:\My Documents\Reports\登记表.xls") '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File ="d:\My Documents\Reports\登记表.xls"

        proc.WaitForClose = True
        Proc.Start()
    Next
END IF


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/17 10:19:00 [只看该作者]

后面的覆盖前面的,如果能动态改名前面是登记表后面改成登记就行了

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/12/17 10:26:00 [只看该作者]

改名还不容易啊:

 

If Forms("选项").Controls("ComboBox1").Value >"" AndAlso Forms("选项").Controls("ComboBox2").Value >"" Then
    For i As Integer = 0 To Tables("申请表").Rows.Count -1 Step 1370
        With Tables("申请表")
            .Select(i, 0, math.min(i + 1369,.rows.count -1), .cols.count -1)
        End With
        Dim Book As New XLS.Book(ProjectPath & "Attachments\登记表.xls") '打开模板
        Book.Build() '生成细节区

        Dim fl As String ="d:\My Documents\Reports\登记表" & i & ".xls"
        Book.Save(fl) '保存工作簿
        Dim Proc As New Process '打开工作簿
        Proc.File = fl

        Proc.Start()
    Next
END IF


 回到顶部
总数 20 上一页 1 2