以文本方式查看主题 - 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=140312) |
||||
-- 作者:guosheng -- 发布时间:2019/9/3 11:10:00 -- 分组统计结果导出excel,若数据量比较大,该如何处理啊? Dim b2 As New SQLGroupTableBuilder("统计表2","租赁合同发票明细表") 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 |
||||
-- 作者:有点蓝 -- 发布时间:2019/9/3 11:37:00 -- 是统计有问题?还是导出excel有问题? 如果是统计有问题,只能是分条件多次导了
|
||||
-- 作者:guosheng -- 发布时间:2019/9/3 11:56:00 -- 统计没有问题。问题是要导出数据量太大,超过十万条,该怎么进行导出的过程优化啊? [此贴子已经被作者于2019/9/3 11:56:51编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/9/3 13:40:00 -- 看看:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=100317&replyID=&skin=1 |
||||
-- 作者:guosheng -- 发布时间: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/9/17 16:54:00 -- 上传实例测试 |
||||
-- 作者:guosheng -- 发布时间: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/9/17 17:45:00 -- 1、试试这个dll:
2、添加Filter Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog dlg.Filter = "Excel文件|*.xlsx" 3、列顺序的问题无法处理,因为是以datatable导出的,顺序只能在table里控制 |