txt导入Excel超出最大行如何自动分表:现有2000W条记录的txt,xls最大65536行,xlsx最大104W行。

txt导入Excel超出最大行如何自动分表:现有2000W条记录的txt,xls最大65536行,xlsx最大104W行。,第1张

这个问题比较有趣。提问者知道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次,效率实在高多了。大道至简,选择合适自己的工具和方法。

我用游标实现了你的功能。
你首先建立一张空表,和你的 *** 作表一样的结构,但是要求是空表,没有任何内容,比如是tempReg2
你把下面的代码拷贝到SQL查询分析器,稍作修改就行。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
DECLARE
Cursor_Title
CURSOR
FOR
SELECT
distinct
title
FROM
RegMember
OPEN
Cursor_Title
declare
@str
varchar(50)
FETCH
NEXT
FROM
Cursor_Title
Into
@str
WHILE
@@FETCH_STATUS
=
0
BEGIN
insert
into
tempReg2
select
top
1

from
RegMember
where
title=@str
FETCH
NEXT
FROM
Cursor_Title
Into
@str
END
CLOSE
Cursor_Title
DEALLOCATE
Cursor_Title
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
我用的表名是RegMember,重复的列名是title,所以这两个名称需要你替换一下。别的可以不变。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13250967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-26
下一篇 2023-06-26

发表评论

登录后才能评论

评论列表(0条)

保存