Foxtable(狐表)用户栏目专家坐堂 → 分组统计结果导出excel,若数据量比较大,该如何处理啊?


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

主题:分组统计结果导出excel,若数据量比较大,该如何处理啊?

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
分组统计结果导出excel,若数据量比较大,该如何处理啊?  发帖心情 Post By:2019/9/3 11:10:00 [只看该作者]

Dim b2 As New SQLGroupTableBuilder("统计表2","租赁合同fa piao明细表")
b2.C
Dim dt2 As fxDataSource
………………

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
     Tables("统计表2").SaveExcel(dlg.FileName,"明细表")  '保存文件
        Dim Proc As New Process
        Proc.File = dlg.FileName
        Proc.Start()
End If

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


加好友 发短信
等级:超级版主 帖子:106675 积分:542564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/3 11:37:00 [只看该作者]

是统计有问题?还是导出excel有问题?

如果是统计有问题,只能是分条件多次导了

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/3 11:56:00 [只看该作者]

统计没有问题。问题是要导出数据量太大,超过十万条,该怎么进行导出的过程优化啊?
[此贴子已经被作者于2019/9/3 11:56:51编辑过]

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


加好友 发短信
等级:超级版主 帖子:106675 积分:542564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/3 13:40:00 [只看该作者]


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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/17 15:55:00 [只看该作者]

数据量大引用dll文件,保存时,怎么弹出保存框,来执行保存过程啊?(图中阴影部分该怎么改啊)
Dim jb As New SQLJoinTableBuilder("查询表1","租赁项目结转明细表")
jb.C
jb.AddTable("租赁项目结转明细表","合同编号","租赁合同结转情况表","合同编号",JoinModeEnum.Left)
jb.AddCols("{租赁项目结转明细表}.合同编号", "客户名称","房间名称","项目名称","租赁类别","合同开始日期","合同终止日期", "应结转租金税额","应结转租金金额","应结转服务费税额","应结转服务费金额","应结转日期","实际结转日期","红冲确认人","红冲确认日期")
jb.filter= filter
jb.Build()
DataTables("查询表1").DataCols.Add("不含税租金金额",Gettype(Double), "isnull(应结转租金金额,0)-isnull(应结转租金税额,0)" )
DataTables("查询表1").DataCols.Add("不含税服务费金额",Gettype(Double), "isnull(应结转服务费金额,0)-isnull(应结转服务费税额,0)" )
Tables("查询表1").Cols("不含税租金金额").Move(8)
Tables("查询表1").Cols("不含税服务费金额").Move(11)
'Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
'dlg.Filter= "Excel文件|*.xls" '设置筛选器
'If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
     'Tables("查询表1").SaveExcel(dlg.FileName,"明细表")  '保存文件
        'Dim Proc As New Process
        'Proc.File = dlg.FileName
        'Proc.Start()
'End If
Dim _execl As New ExOpenXml.ExOXExecl()
_execl.Open("d:\simple.xlsx")
_execl.ToExecl(DataTable.BaseTable)
_execl.Dispose()
[此贴子已经被作者于2019/9/17 16:36:00编辑过]

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


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

这个意思?

If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim _execl As New ExOpenXml.ExOXExecl()
    _execl.Open(dlg.FileName)
    _execl.ToExecl(Tables("查询表1").DataTable.BaseTable)
    _execl.Dispose()
End If

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/17 16:34:00 [只看该作者]

改后转换提示:
Conversion from type 'DBNull' to type 'Date' is not valid.
若把日期列(“合同开始日期","合同终止日期“,”红冲确认日期”)去掉提示则导出成功了。
1、日期列导出该怎么处理啊?
2、此外,弹出的保存对话框,需要输入excel的扩展名,否则不让保存,怎么让保存时只输入 文件名即可啊(不用输入xlsx扩展名)。
3、
Tables("查询表1").Cols("不含税租金金额").Move(8)
Tables("查询表1").Cols("不含税服务费金额").Move(11)
这两行代码没起作用,最后这两列还是在表的最右边。该咋调啊?
[此贴子已经被作者于2019/9/17 16:51:06编辑过]

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


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

上传实例测试

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/17 17:09:00 [只看该作者]

命令框输入(数据量比较大,执行时需要等待一会;用注释掉的这一行带日期的执行就报错了;红色阴影为日期类型数据):

Dim jb As New SQLJoinTableBuilder("查询表1","租赁项目结转明细表")
jb. C   数据源名称 cs2
jb.AddTable("租赁项目结转明细表","合同编号","租赁合同结转情况表","合同编号",JoinModeEnum.Left)
'jb.AddCols("{租赁项目结转明细表}.合同编号", "客户名称","房间名称","项目名称","租赁类别","合同开始日期","合同终止日期", "应结转租金税额","应结转租金金额","应结转服务费税额","应结转服务费金额","应结转日期","实际结转日期","红冲确认人","红冲确认日期")
jb.AddCols("{租赁项目结转明细表}.合同编号", "客户名称","房间名称","项目名称","租赁类别", "应结转租金税额","应结转租金金额","应结转服务费税额","应结转服务费金额","应结转日期","实际结转日期","红冲确认人")
jb.Build()
DataTables("查询表1").DataCols.Add("不含税租金金额",Gettype(Double), "isnull(应结转租金金额,0)-isnull(应结转租金税额,0)" )
DataTables("查询表1").DataCols.Add("不含税服务费金额",Gettype(Double), "isnull(应结转服务费金额,0)-isnull(应结转服务费税额,0)" )
Tables("查询表1").Cols("不含税租金金额").Move(8)
Tables("查询表1").Cols("不含税服务费金额").Move(11)
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim _execl As New ExOpenXml.ExOXExecl()
    _execl.Open(dlg.FileName)
    _execl.ToExecl(Tables("查询表1").DataTable.BaseTable)
    _execl.Dispose()
End If
[此贴子已经被作者于2019/9/18 9:31:05编辑过]

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


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

1、试试这个dll:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:openxml组件.zip

2、添加Filter 
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter = "Excel文件|*.xlsx"

3、列顺序的问题无法处理,因为是以datatable导出的,顺序只能在table里控制

 回到顶部
总数 11 1 2 下一页