Foxtable(狐表)用户栏目专家坐堂 → SaveExcel导出效率太低?


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

主题:SaveExcel导出效率太低?

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
SaveExcel导出效率太低?  发帖心情 Post By:2012/4/27 18:50:00 [显示全部帖子]

以前只重视大容量数据的汇总统计效率,很少关注导出问题。

因为最近一个客户的“变态”测试,发现SaveExcel的数据导出效率不是一般的差!

请看例子:6.5万条数据,用sql语句导出到Excel只要2-3秒,用Table的SaveExcel方法竟然要接近10分钟!

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目29.rar

[此贴子已经被作者于2012-4-27 20:50:25编辑过]

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/4/27 20:41:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-4-27 20:36:00的发言:
用2楼的方法

呵呵,既然这样快,老大何不改进一下?省的绕一圈了!


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/4/27 20:49:00 [显示全部帖子]

2楼的方法确实是快多了,但仍比直接执行sql语句慢。

经再次测试,菜单中的“高速导出”非常快,效率高,但菜单中的“导出Excel”还是慢如蜗牛,跟SaveExcel一样。

建议老大改下,尤其是SaveExcel很常用的。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/4/27 20:59:00 [显示全部帖子]

Exporter确实比SaveExcel效率高N倍,可惜不支持外部数据源。

如果能指定外部数据源,随便多少条的数据,根本就不需要加载而直接导出了!


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/4/27 21:32:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-4-27 21:08:00的发言:

这个没办法的,根本就不是我写的,还有一个方法:

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

 

这个试过,跟SaveExcel差不多,效率很低。

还是Exporter靠谱,跟直接用sql语句导出效率一样(2楼的代码,只用第二段就可以了,第一段多余,呵呵)

对于数据量很小而且需要包含导出格式的,就用SaveExcel;大量的数据导出,必须用Exporter!


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/4/28 10:31:00 [显示全部帖子]

以下是引用baoxyang在2012-4-28 10:06:00的发言:

如果,菜单中的“高速导出”非常快,把源代码集成SaveExcel功能,把原SaveExcel取代之.这个是否可做到?

要么把高速导出源代码公开,自己动手制作一个导出函数功能,这样可否?

开始我是直接用2楼的代码测试的,感觉要比sql命令慢。

仔细研究2楼的代码后,发现第一段是不需要的。把第一段代码删除后,就不用再重复加载一次数据了。效率和sql命令一样了。

实际测试结果表明:Exporter和后台直接执行sql语句的效率是一样的,高速导出应该就是用Exporter做的。它和SaveExcel的最大区别是:Exporter导出效率高但不能保存数据格式;SaveExcel导出效率低但可以保存数据格式。

Exporter目前最大的问题是,导出不包含格式也就罢了,竟然连Caption也不能导出,也不能指定外部数据源,数据都必须先加载。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/4/28 10:54:00 [显示全部帖子]

以下是引用mr725在2012-4-28 10:47:00的发言:

其实,我们导出数据时通常用有个查询的过程,如:按时间、按品名等等,也就加载了需要的数据。  加载数据都需要一定的时间,如erp等。 很少有不经过查询而直接导出的。 

 

查询就是有各式各样的列名称和格式需求的, 所以就需要选择适合的导出命令了(当然能又快又符合需要导出方法最好拉)。。。

也不一定。由于Excel的便利性,办公一族多用它进行数据交换。

对于数据要求严谨的单位,很多客户端都不给开放数据导出权限的。这就需要有权限的部门将数据导出来给他。

在这种情况下,数据先加载再导出,效率就很低了。

有个指定数据源的选项是最好了,就象后台统计一样,不加载任何数据直接在后台搞定。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/4/28 11:18:00 [显示全部帖子]

先Exporter再用VBA处理,效率肯定高很多,但对于复杂的表头处理,就不如CreateSheetHeader了!


 回到顶部