这是字符串:
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';";
都说IMEX=1的作用是只要TypeGuessRows设置的行数中有一列是混合型数据,那整列都会强制以文本格式导入数据。
可是我用了发现IMEX=1根本不起作用,用不用的结果都是一样的,同样是比较TypeGuessRows设置的行数中,哪种类型的数据多,就采取哪种格式写入。
因此始终会丢失数据,究竟IMEX=1是不是已经没用了呢,求大神分析赐教?
目前我的解决方法只能是 TypeGuessRows 设为1,然后在Excel中将数据列第一列设置为文本格式。
用NPOI读取execl数据吧,比较简单,容易控制
在试着用这个,不过有好的实例么?
@Kingson Yang: http://www.cnblogs.com/lwme/archive/2011/11/18/npoi_excel_import_export.html看完应该可以上手了!
这种方式木有做过,Aspose Cells 导入导出都很方便
这个导入会全部数据都是文本类型吧,然后存储到数据库的时候有点问题。
会用前8行的数据类型来作为导入的数据类型。检查下会不会是这个问题?
是这个问题,不过已经设定TypeGuessRows为很大的值 而且IMEX=1 可是混合列依然不起作用。
@Kingson Yang:
一个改进的措施是IMEX=1与注册表值TypeGuessRows配合使用,TypeGuessRows 值决定了ISAM驱动程序从前几条数据采样确定数据类型,默认为“8”。可以通过修改“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel”下的该注册表值来更改采样行数。如果改为0,则表示所有行均使用文本类型。
地址:http://www.cnblogs.com/firehutter/archive/2012/05/30/2525745.html ,试试吧~
@幻天芒: 我一直都是用这些做的,不过依然存在问题。
个人觉得NPOI已经足够强大了