公司月月做报表时,约有十万数据,用DELPHI做导出,用什么方案好?导出XLS还是TXT
公司每月做报表时,约有十万数据,用DELPHI做导出,用什么方案好?导出XLS还是TXT?
公司每月做报表时,约有十万数据,用DELPHI做导出,用什么方案好?导出XLS还是TXT?
现在从数据库读取这十万数据出来,约二十秒钟,用DELPHI导出来,估计时间需要更长,有什么方法解决这个问题?而且报表总不能每个月,我直接从数据库找出来啊...这样的工作太累人....
------解决思路----------------------
之前在做导出Excel时,因为列比较多,一秒也就只能导出几条,如果要导出十万条数据,要导几个小时吧。
后来弄了一个快速导出,不设定Excel的格式,就是直接导出文本格式,两列之间用TAB分开,然后文件扩展名改成XLS,看起来就是Excel了,而且用Excel打开也没问题。缺点就是无法设定格式。
补充一点,十多万条,Excel2003及之前版本无法导出吧,最多是65536条。2007及之后应该支持更多行了。
------解决思路----------------------
即然是导出成XLS,数据库是SQL,将需要的数据建立初视图,直接用SQL数据库的数据导出功能,生成EXCEL,10万数据也就是几分钟时间。
------解决思路----------------------
关注我的资源页,刚上传了计划任务启动执行SQL有数据则导出文档并复制到其他目录。文件命名可以自动定义格式
------解决思路----------------------
http://download.****.net/detail/lsh341999/8569393
计划任务设置格式
程序路径 isRun 文件名称 True[yyyy_mm_dd_hh_nn_ss] 复制目录
------解决思路----------------------
yyyy-mm
例1:
d:\a.exe isrun 测试文档 False \\erp\每月月结结果
------解决思路----------------------
yyyy-mm
执行后
D:\测试文档.XLS
\\erp\每月月结结果\2015_04\测试文档.XLS
例2:
d:\a.exe isrun 测试文档 true \\erp\每月月结结果
------解决思路----------------------
yyyy-mm
执行后
D:\测试文档_2015_04_08_09_46_55.XLS
\\erp\每月月结结果\2015_04\测试文档_2015_04_08_09_46_55.XLS
------解决思路----------------------
很少直接用到EXCEL,因为以前的EXCEL的记录数量不是integer的最大值吗?
十万好像已经不是一个合法的integer标准。直接用excel打开,也不知道会不会出错。
感觉上楼主需要的也许是线程处理。
把数据分段提取出来,然后开启多线程将各段查询结果写入磁盘。
例如,一个月的数据,按天分段,会有最多三十一天,我们将查询结果分为三十一段,然后开启进程,同时让三十一段写进磁盘,这样就可以最大程度上提高效率。
------解决思路----------------------
帮DBGRIDEH 的导出功能,二万条1秒搞定!如下是代码:
if Panel1.visible then
dbgrdList.SetFocus;
Try
msavediolog:=TSaveDialog.Create(self);
msavediolog.Filter:='Excel File(*.xls)
------解决思路----------------------
*.xls';
if mReportpara.REPORT_NAME='' then
ExportxlsFromDBGRID(dbgrdList,msavediolog,Self.Caption,self.Handle)
else
ExportxlsFromDBGRID(dbgrdList,msavediolog,mReportpara.REPORT_NAME,self.Handle);
finally
msavediolog.free;
end;
------解决思路----------------------
高效 方便 用 TXT
当然CSV也是一种不错的选择
当然
楼主如果不介意
可以分批导出EXCEL
比如定义10次循环,每次循环按既定的规则顺序导出一个EXCEL,该XLS里面有10000条数据
------解决思路----------------------
其实锐浪报表能满足你所有的需求
锐浪报表支持导出的文件格式如下
EXCEL
RTF
PDF
HTML
CSV
TXT
图像
……
都是一句代码帮你搞定
系统楼主能通过锐浪找到捷径
公司每月做报表时,约有十万数据,用DELPHI做导出,用什么方案好?导出XLS还是TXT?
现在从数据库读取这十万数据出来,约二十秒钟,用DELPHI导出来,估计时间需要更长,有什么方法解决这个问题?而且报表总不能每个月,我直接从数据库找出来啊...这样的工作太累人....
------解决思路----------------------
之前在做导出Excel时,因为列比较多,一秒也就只能导出几条,如果要导出十万条数据,要导几个小时吧。
后来弄了一个快速导出,不设定Excel的格式,就是直接导出文本格式,两列之间用TAB分开,然后文件扩展名改成XLS,看起来就是Excel了,而且用Excel打开也没问题。缺点就是无法设定格式。
补充一点,十多万条,Excel2003及之前版本无法导出吧,最多是65536条。2007及之后应该支持更多行了。
------解决思路----------------------
即然是导出成XLS,数据库是SQL,将需要的数据建立初视图,直接用SQL数据库的数据导出功能,生成EXCEL,10万数据也就是几分钟时间。
------解决思路----------------------
关注我的资源页,刚上传了计划任务启动执行SQL有数据则导出文档并复制到其他目录。文件命名可以自动定义格式
------解决思路----------------------
http://download.****.net/detail/lsh341999/8569393
计划任务设置格式
程序路径 isRun 文件名称 True[yyyy_mm_dd_hh_nn_ss] 复制目录
------解决思路----------------------
yyyy-mm
例1:
d:\a.exe isrun 测试文档 False \\erp\每月月结结果
------解决思路----------------------
yyyy-mm
执行后
D:\测试文档.XLS
\\erp\每月月结结果\2015_04\测试文档.XLS
例2:
d:\a.exe isrun 测试文档 true \\erp\每月月结结果
------解决思路----------------------
yyyy-mm
执行后
D:\测试文档_2015_04_08_09_46_55.XLS
\\erp\每月月结结果\2015_04\测试文档_2015_04_08_09_46_55.XLS
------解决思路----------------------
很少直接用到EXCEL,因为以前的EXCEL的记录数量不是integer的最大值吗?
十万好像已经不是一个合法的integer标准。直接用excel打开,也不知道会不会出错。
感觉上楼主需要的也许是线程处理。
把数据分段提取出来,然后开启多线程将各段查询结果写入磁盘。
例如,一个月的数据,按天分段,会有最多三十一天,我们将查询结果分为三十一段,然后开启进程,同时让三十一段写进磁盘,这样就可以最大程度上提高效率。
------解决思路----------------------
帮DBGRIDEH 的导出功能,二万条1秒搞定!如下是代码:
if Panel1.visible then
dbgrdList.SetFocus;
Try
msavediolog:=TSaveDialog.Create(self);
msavediolog.Filter:='Excel File(*.xls)
------解决思路----------------------
*.xls';
if mReportpara.REPORT_NAME='' then
ExportxlsFromDBGRID(dbgrdList,msavediolog,Self.Caption,self.Handle)
else
ExportxlsFromDBGRID(dbgrdList,msavediolog,mReportpara.REPORT_NAME,self.Handle);
finally
msavediolog.free;
end;
------解决思路----------------------
高效 方便 用 TXT
当然CSV也是一种不错的选择
当然
楼主如果不介意
可以分批导出EXCEL
比如定义10次循环,每次循环按既定的规则顺序导出一个EXCEL,该XLS里面有10000条数据
------解决思路----------------------
其实锐浪报表能满足你所有的需求
锐浪报表支持导出的文件格式如下
EXCEL
RTF
HTML
CSV
TXT
图像
……
都是一句代码帮你搞定
系统楼主能通过锐浪找到捷径