这个问题比较有趣。提问者知道excel的极限所在,依然一往无前地要将txt导入excel。可否想过,excel在如此大量的数据面前,即使能成功导入,也会打开很慢甚至打开死机?我试过2千条记录导入excel后,打开要5分钟,1w条记录就假死机了。这样的大量数据复制过来,excel只能作为数据存储载体,无法打开查阅或者使用的。
我的建议:不要导入到excel里面,而是导入到数据库里面。
一般电脑装有office,可以拿出来的数据库工具,可以选择office组建之一access。(添加组建的安装过程不叙述了)
txt导入到access有向导可以实现(菜单外部数据→文本文件),这里不叙述了。
而且aceess可以打开2000w的表,只要导入的数据(txt文件大小)不要超过1G就可以了。可以打开这个表,可以修改数据,不会假死,与excel操作差不多。
如果楼主还是希望将txt导出到excel,这里给个方法,需要调用点sql语句,但不使用vba(减少程序调试时间):
1、新建一个access文件,用向导将txt导入到access,注意设置自动编号为表的主键,字段名为“ID”。导出后保存表名称为“表1”。
2、按照每个excel文件100w条记录来导出,每超过100w条导出到新的excel表的思路来导出。在access建立一个查询,进入sql视图,粘贴代码: select top 1000000 * from 表1
保存该查询为“查询1”,关闭后。在access左边导航处右键“查询1”导出到excel。后面你懂的。
3、进入“查询1”sql视图,修改代码为 select top 1000000 * from 表1 where id not in (select top 1000000 id from 表1 )。然后导出100w+1到200w的数据。
4、进入“查询1”sql视图,修改代码为 select top 1000000 * from 表1 where id not in (select top 2000000 id from 表1 )。然后导出200w+1到300w的数据。如此类推,一共手工导出20次。
也许你会问,为何不用excel的vba工具,调用ado控件直接打开txt导入数据到excel。我建议是,用ado方法,其实也是建立一个虚拟数据库,但导入数据的过程全部是代码,不直接,调试很花时间(而且容易假死)。手工20次,效率实在高多了。大道至简,选择合适自己的工具和方法。