以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] EXCEL 模板导出问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=72654)

--  作者:wangyinming
--  发布时间:2015/8/4 9:46:00
--  [求助] EXCEL 模板导出问题
1. 6000条数据导出时,时间太长,约2~3分,求解决!
2.导出运行一段时间后,出现以下错误,见附件


图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


--  作者:wangyinming
--  发布时间:2015/8/4 9:48:00
--  
导出代码:Dim pr As Integer = Tables("检查").Rows.Count


Dim dlg As New SaveFileDialog \'定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
e.Form.Controls("Label1").Text = "正在导出 ... ... ,请稍后..."
Application.DoEvents()
    Dim Book As New  XLS.Book(ProjectPath &  "Attachments\\导出模版.xls")
    Dim fl As  String = dlg.FileName
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    Sheet(0,0).Value = "<" & Tables("检查").Filter & ">" \'写入打印条件
    Book.Build() \'生成细节区
    Book.Save(fl) \'保存工作簿

e.Form.Controls("Label1").Text = "已经完成"
    
    If MessageBox.Show("成功导出数据"& pr &"条,是否打开数据?","确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question) =DialogResult.OK Then
        
        Dim Proc As New Process
        Proc.File = fl
        Proc.Start()
e.Form.Controls("Label1").Text = ""
    Else
      \'e.form().Close
        Syscmd.Table.ToggleSortAndFilter()
e.Form.Controls("Label1").Text = ""
    End If
End If

选择时段时出现,上述第2个问题

--  作者:大红袍
--  发布时间:2015/8/4 10:00:00
--  

导出代码没什么问题,但这句,肯定不能在0,0的位置设置条件啊。

 

设置条件的位置,参考 http://www.foxtable.com/help/topics/0201.htm

 

Sheet(0,0).Value = "<" & Tables("检查").Filter & ">"


--  作者:大红袍
--  发布时间:2015/8/4 10:01:00
--  
导出,时间长的问题,做个例子看看,代码是没什么问题的。
--  作者:wangyinming
--  发布时间:2015/8/4 10:31:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文件夹 (2).rar


请大红袍老师看看

Sheet(0,0).Value = "<" & Tables("检查").Filter & ">"

改成

Sheet(2,77).Value = "<" & Tables("检查").Filter & ">"

也不可,不知哪里错了
[此贴子已经被作者于2015/8/4 10:31:44编辑过]

--  作者:大红袍
--  发布时间:2015/8/4 10:47:00
--  

慢的问题没办法解决,因为这个excel报表的弊病。
 
 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:检查.zip


 
如果想快,就用saveExcel或者Exporter
 
http://www.foxtable.com/help/topics/0559.htm

 
http://www.foxtable.com/help/topics/0683.htm


 

[此贴子已经被作者于2015/8/4 10:47:13编辑过]

--  作者:wangyinming
--  发布时间:2015/8/4 11:05:00
--  
  本来使用的是Exporter,后来为了将逻辑列中的True 替换成“*”,False 替换成“ ”。才使用EXCEL模板的。

有无它法,将逻辑列中的True 替换成“*”,False 替换成“ ”。

--  作者:大红袍
--  发布时间:2015/8/4 11:09:00
--  

加表达式列,导出的时候,导出表达式列。

 

动态添加表达式列。

 

http://www.foxtable.com/help/topics/1428.htm

 


--  作者:wangyinming
--  发布时间:2015/8/4 11:16:00
--  
谢谢,大红袍老师! 我再学习一下动态表达式。
--  作者:大红袍
--  发布时间:2015/8/4 11:17:00
--  
 可以动态,但你的情况,直接添加固定的表达式列,是最好的选择。你把表达式列隐藏即可。