access查询结果导出excel ,但是数据太大300多万个记录,装不下。怎么办?

如题所述

excel2003版本最大行65536;2007版最大行1048576。都比300万小,所以导出记录到同一个工作表是不可能的。只能分段导出,例如sheet1是2010年的记录,sheet2是2011年的记录,导多几个工作表就可以了。
但是,其实楼上说得对,excel在处理大量数据方面并不优秀,建议还是在access中操作。追问

谢谢,请问,access导出文件时候,有没有必要保存“导出步骤“,如果钩选这一项的话会占用内存吗?另外还有一个问题:access数据方多了,运行起来特别慢,怎样提高access 运行速度,特别在运行查询的时候,一般要等半个小时才能运行出结果。还有运行查询生成的查询表,以后没有用了,可以直接删除,就真的删除了,内存就会降低了吧。

追答

一下子多了这么多问题。不过,都是些常见和我以前解答过的问题。
1、保存步骤,我没有操作过,但估计作用不大。因为我很多是导出1次就不再导出,如果重复导出,就用vb语句+sql语句进行导出。详见我以前的回答http://zhidao.baidu.com/question/141726000.html?oldq=1
2、Access是小型数据库,也有它的极限,首先是不能超过2G。我测试过,1G左右就很慢了。但是,除了数据太多的原因,影响速度的还有就是查询是否优化。我曾经见过一位兄台,做了3个重复引用的查询,一个窗体做了多次引用某个表格的列表框,当然慢了。我估计,使用数据库慢了,有2个可能原因
①查询引用同一个表次数太多。
当数据量不是很大的时候,同一个数据表引用多次后,查询的效率就是这个表的记录数的引用数 乘方。
当表的数据上十万条,这样引用多次,效率就可想而知。
解决方法:设立临时表,分步查询,每个查询只对这个表引用一次。
②子窗体引用太多。
子窗体的数据源因为是查询的,所以可相当于同时引用了多个查询和表。原理跟上边一样,不啰嗦了。
解决方法:
a、减少子窗体的引用,可以用弹出的方式,不用的窗体就不要一开始加载进来,用到那个才弹出那个。
b、如果还是希望主窗体加载的时候就引用子窗体,可以将子窗体的数据源设置为空,真正加载的时候,才将数据源设为“××子窗体”,这样每次加载的只是一个没有源的控件,速度就会提升了。

补充一下,设立临时表,是指针对输出窗体的临时表,可能只需要几十条记录,就是用更新查询的方法不断将重复运算的数据写到这个临时表。

再解释一下。弹出的方式,不是指窗体的属性改成弹出,而是说按钮摁下,才启用 docmd.open命令,平常这个子窗体是关闭的。

3、查询生成的表的问题。我一般对于保存中间计算过程的表,在运算最后都会清空该表,而不是删除该表,只要表的数据没有了,就不占空间,不会对2G极限产生威胁。

追问

谢谢,另我07版本excel 总是会自动保存,遇到文件大公式多的时候,文件有时就自动保存了,自动保存很缓慢,因为里面含有大量公式,一自动保存,文件相当于就卡死了,最后就是没有响应(本来是想把里面大量含公式的选择性粘贴为数字,这样保存快也方便一些)不能继续操作,想撤销都撤销不了。最后文件废掉了只得打开从头再来。我取消不了里面自动保存功能,每次取消就会说:没有联机或其他什么原因(公司电脑,没网络)

追答

1、excel确实不是大量数据处理时的应用工具,特别是引用太多的时候,函数用了很多聚集函数的时候,确实会出现保存缓慢。曾经有人复制粘贴个单元格,都出现了假死,后来才知道是单元格式太多了,改成选择性粘贴→公式,才少了假死。虽然把excel工作簿一个分成多个可以减少保存缓慢的问题,但这不是根问解决。大量的数据处理,还是交给access操作吧。

2、我没有遇到过这样的自动保存的问题,无法回答,我一般还把自动保存时间从10分钟改成1分钟呢。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-29
你可以试试以下方法:
用Excel2010 打开access保存的数据库文件,打开时会提示你要打开的表或者查询,选择你的查询,等待,然后再保存为Excel格式的即可。
第2个回答  2012-04-19
这样的情况只能在ACCESS数据库中操作。没有别的办法。
相似回答