Foxtable(狐表)用户栏目专家坐堂 → excel模板导出数据多,程序闪退


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

主题:excel模板导出数据多,程序闪退

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


加好友 发短信
等级:幼狐 帖子:60 积分:695 威望:0 精华:0 注册:2014/1/25 16:11:00
excel模板导出数据多,程序闪退  发帖心情 Post By:2024/6/20 16:07:00 [只看该作者]

 book.AddDataTable("客户对账",sqlstr) 
    
book.AddDataTable("客户对账明细",dt)  
    
    book.AddRelation("客户对账","对账编号","客户对账明细","对账编号")
    Book.Build() 

明细表大概2千多条数据,生成过程中程序闪退,是数据量多的问题么?有什么解决办法么?


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


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/20 16:19:00 [只看该作者]

2千多条不算多,一般闪退是出现了死循环

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


加好友 发短信
等级:幼狐 帖子:60 积分:695 威望:0 精华:0 注册:2014/1/25 16:11:00
  发帖心情 Post By:2024/6/20 16:32:00 [只看该作者]

我觉得也不应该,但我是用模板导出,数据都加载了,就是build过程闪退,就是上面的主要代码,怎么会死循环呢

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


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/20 16:34:00 [只看该作者]

完整代码发上来看看

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


加好友 发短信
等级:幼狐 帖子:60 积分:695 威望:0 精华:0 注册:2014/1/25 16:11:00
  发帖心情 Post By:2024/6/20 16:49:00 [只看该作者]

Dim dt As DataTable
dt = ExecSQLGetDataTable(sql1,"V16Data")
'MessageBox.show(dt.DataRows.Count)

Dim Book As New XLS.Book(fp)
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog 
dlg.Filter= "Excel文件|*.xls" '设置筛选器
dlg.FileName=tr("客户简称") & tr("对账年份") & tr("对账月份") & "对账表.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim fl As String = dlg.FileName

    book.AddDataTable("客户对账","V16Data",sqlstr)
    
    book.AddDataTable("客户对账明细",dt)  
    
    book.AddRelation("客户对账","对账编号","客户对账明细","对账编号") '建立关联
'MessageBox.show("start build")
    Book.Build() '生成细节区
    Book.Save(fl) '保存工作簿
'MessageBox.Show("end")
    Dim Proc As New Process '打开工作簿
    Proc.File = fl
    Proc.Start()
End If

测试了800多条数据正常,很奇怪(有sql语句的地方发不出来,改成变量了)。

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


加好友 发短信
等级:超级版主 帖子:107702 积分:547831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/20 17:14:00 [只看该作者]

这样试试

Dim Book As New XLS.Book(fp)
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog 
dlg.Filter= "Excel文件|*.xls" '设置筛选器
dlg.FileName=tr("客户简称") & tr("对账年份") & tr("对账月份") & "对账表.xlsx"
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim fl As String = dlg.FileName

    book.AddDataTable("客户对账","V16Data",sqlstr)
    book.AddDataTable("客户对账明细","V16Data",sql1)  
    
    book.AddRelation("客户对账","对账编号","客户对账明细","对账编号") '建立关联
'MessageBox.show("start build")
    Book.Build() '生成细节区
    Book.Save(fl) '保存工作簿
'MessageBox.Show("end")
    Dim Proc As New Process '打开工作簿
    Proc.File = fl
    Proc.Start()
End If

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


加好友 发短信
等级:幼狐 帖子:60 积分:695 威望:0 精华:0 注册:2014/1/25 16:11:00
  发帖心情 Post By:2024/6/23 19:21:00 [只看该作者]

蓝老大,按你那个代码不行,其实原来就是你这种写法,不行才换的,还是闪退。还麻烦您看一下怎么解决比较好

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


加好友 发短信
等级:幼狐 帖子:60 积分:695 威望:0 精华:0 注册:2014/1/25 16:11:00
  发帖心情 Post By:2024/6/23 20:16:00 [只看该作者]

解决了,蓝老大,客户做的模板下面有多余的行,有异常。晕死

 回到顶部