以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]Excel报表容量问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=8851)

--  作者:易服
--  发布时间:2010/12/16 11:33:00
--  [求助]Excel报表容量问题

有一Excel报表每一记录占一页,当记录数超过1370行时,报表不正常甚至导致主机报警死机。

不正常


此主题相关图片如下:2010-12-15 10-32-12.png
按此在新窗口浏览图片

正常时预览

此主题相关图片如下:2010-12-15 10-58-19.png
按此在新窗口浏览图片

有什么解决方法?
With Tables("申请表")
    .Select(0 ,0, .Rows.Count - 1, .Cols.Count - 1)
End With
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


--  作者:狐狸爸爸
--  发布时间:2010/12/16 11:49:00
--  

用Excel 2007看看


--  作者:mr725
--  发布时间:2010/12/16 13:57:00
--  
可能要用循环来打印或预览吧···· 因为“Excel报表每一记录占一页”啊~~
--  作者:易服
--  发布时间:2010/12/16 14:20:00
--  
以下是引用mr725在2010-12-16 13:57:00的发言:
可能要用循环来打印或预览吧···· 因为“Excel报表每一记录占一页”啊~~

怎么用循环来打印或预览?

我想个笨办法,先判断行数,不会写代码

If Forms("选项").Controls("ComboBox1").Value >"" AndAlso Forms("选项").Controls("ComboBox2").Value >"" Then
    If ("_Identify") < 1370 Then
        With Tables("申请表")
            .Select(0 ,0, .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()
    End If
Else
    MessageBox.Show("手工选定行数","提示")
End If


--  作者:狐狸爸爸
--  发布时间:2010/12/16 14:37:00
--  
For i as integer = 0 to tables("xxx").Rows.Count -1 Step 1370
     Tables("xxx").Select(i, 0, i + 1369, 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.Verb = "Print" \'指定动作
      Proc.Start()
Next

--  作者:易服
--  发布时间:2010/12/16 15:23:00
--  
以下是引用狐狸爸爸在2010-12-16 14:37:00的发言:


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

--  作者:狐狸爸爸
--  发布时间:2010/12/16 15:25:00
--  

呵呵,你根据错误提示,应该能够找出这句代码的问题的。

这次我不说,你自己找。

 

图片点击可在新窗口打开查看


--  作者:mr725
--  发布时间:2010/12/16 15:28:00
--  

Tables("xxx").Select(i, 0, i + 1369, .cols.count -1)   红点没加上啊

 

 

[此贴子已经被作者于2010-12-16 15:40:00编辑过]

--  作者:易服
--  发布时间:2010/12/16 15:34:00
--  
以下是引用mr725在2010-12-16 15:28:00的发言:
Tables("xxx").Select(i, 0, i + 1369, .cols.count -1)   红点没加上啊

加上也不行的


--  作者:mr725
--  发布时间:2010/12/16 15:40:00
--  


For i as integer = 0 to tables("xxx").Rows.Count -1 Step 1370   这个是要每隔1370行打印一行吗?

 

 


For i as integer = 0 to 3   先试一试这个吧。只打印四行的。。。

[此贴子已经被作者于2010-12-16 15:41:38编辑过]