日期:2014-05-18  浏览次数:20429 次

excel写入奇案!!用oleDB写数据到excel,超过13571行文件就为空白
工具: vs2010 与Microsoft.ACE.OLEDB.12.0;

代码无特别,采用oleDB写入excel,无论一行一行写入或者insert into,超过13751条记录(从13572条记录开始导出的excel为空白文件,即excel只有模板文件的表头)

但是,如果直接从vs2010调试启动站点,都是可以成功导出全部记录。配置从站点访问就有记录条数限制了(最多写入13571,超过13571条记录,整个文件就只有表头,没有写入任何记录,也无任何报错,excel写入前后都有正常log,没错误啊)。

网上搜索也无类似案例,不得其解。 请大家帮忙推一下原因。

------解决方案--------------------
好吧没仔细看,excel本身也有显示限制的!
------解决方案--------------------
坐等包公
------解决方案--------------------
坐等高手
------解决方案--------------------
EXCEL2003 65536行
EXCEL2007 1048576行

------解决方案--------------------
这个应该是execl的自己的问题吧。难道你有十万条数据,你导入到一张execl表也能全部显示吗?
------解决方案--------------------
感觉这个是楼主代码优化的问题,我原来语句过显示IP地区问题(IP地区存在Access数据库),显示到后面就没有地区显示了,加载太慢,不知道被什么和谐了。但是调试一样是成功的。
所以,楼主还是从自己的代码上下手吧!
调试的时候程序在断点的地方被暂停,有点类似有足够时间去运行一样,没有断点,反而没有足够时间去处理这些数据。
个人愚见!
------解决方案--------------------
设置断点在13570点,然后跟踪一下是什么原因它不工作了


------解决方案--------------------
13571行的数据是否超过255字符?
------解决方案--------------------
一步一步检查吧,首先检查源,可以考虑用打乱源数据来看是否还是13572行出错。还可以减少数据列,检查是否因为数据量过大而产生问题。
------解决方案--------------------
会不会这一行有一些不该有的命令字符串呢?试试把这一行的内容变一下LOOK LOOK呗
------解决方案--------------------
> 配置从站点访问就有记录条数限制了(最多写入13571)
这个可以看一下web.config的配置,尝试增加一下某一buffer的大小。
------解决方案--------------------
围观...
------解决方案--------------------
关注中...
------解决方案--------------------
excel是有行数限制的,修改一下注册表中一个与excel有关的键值(忘了),就可以了。
------解决方案--------------------
我个人觉得是你13571哪条数据有误,你把前面的几条数据删除了。看看是不是到13571条数据就空白。
------解决方案--------------------
热切关注!!
------解决方案--------------------
> 那就是写入数据的大小在什么地方限制了
其实是你的writeDataTb能一次性读入的数据在某一地方有限制。个人仍倾向于是web.config. oledb一般而言不会有此限制。并且你在调试环境中没有问题。
------解决方案--------------------
你可以试一下将某一条记录往excel里写上50000次。应该不会有问题。
------解决方案--------------------
 在使用 ADO.NET 导出 Excel 文件时,连接字符串里面已经设置了 IMEX=1,仍有部分数据不能导出,经过研究,需要在注册表中进行设置 TypeGuessRows 的配置,默认情况下,驱动程序会扫描前 8 行数据,来对数据类型进行采样。设置为 0 ,将对列的所有行进行扫描,如果前八行采样数据都是数值类型的话,设置 IMEX = 1 也不会将剩下的行的默认数据类型转换为文本,它将保留数值类型,也就是把整个列当成数字类型对待。 因此,要想得到完整的数据,需要修改注册表的设置 TypeGuessRows 为 0。TypeGuessRows 在注册表的位置:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]

Windows 7等 64 系统:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel]

IMEX 的可能设置是:

0 Export 模式
1 Import 模式
2 Linked 模式(full update capabilities)

设置 TypeGuessRows 为 0 将会导致性能的下降。IMEX=1 数据内容也能出现不正常的现象,比如长数字可能会出现科学计数法的格式显示。比较好的做法是导出前,对所有单元格进行处理,在单元格内容前面加 '。



------解决方案--------------------
文件改成xls(2003格式)试下
------解决方案--------------------