OleDbDataReader在单元格中看不到数据(.xlsx)
阅读xlsx文件(我使用OleDbDataReader)有一个非常奇怪的问题。
我有一个列,其中包含以下数据:
- 50595855
- 59528522
- C_213154
- 23141411
问题是,当我读这个专栏时,读者告诉我第三行是空的。 Excel中的列格式设置为“常规”。 但是当我将格式设置为“文本”时,一切正常,阅读器看到该行中的数据。
所以只是为了实验的缘故,我在前两行用字母作为前缀,使它看起来像下面这样:
- C_50595855
- C_59528522
- C_213154
- 23141411
即使列格式设置为“常规”,读者也可以毫无问题地读取所有内容。
所以Excel显然在加载之前会分析列中的数据,当列的第一个单元格看起来像数字而其余的一些是文本时,Excel会感到困惑。
这对我来说真的很奇怪,因为在单元中有数据或者没有数据。
任何人有任何想法,为什么这是发生?
任何帮助都感激不尽。
问候,伊戈尔
正如你猜测的那样,这是由混合数据types引起的问题。 如果你search“OleDBDataReader混合types”,你会得到一些答案。 这是一个描述问题的MSDN页面 :
“这个问题是由于Excel ISAM驱动程序的限制造成的,因为一旦它确定了Excel列的数据types,它将返回一个空值,该值不是ISAM驱动程序为该Excel列默认设置的数据types。 Excel ISAM驱动程序通过检查前几行中的实际值来确定Excel列的数据types,然后select代表其采样中大部分值的数据types。
…和解决scheme:
“确保Excel中的数据是以文本formsinput的,只要将Excel列重新格式化为文本就不能实现这一点,重新格式化Excel列后必须重新input现有值,在Excel中,可以使用F5重新input现有值值在选定的单元格中。
您可以添加选项IMEX = 1; 到OpenDatabase方法中的Excel连接string。 例如:
Set Db = OpenDatabase("C:\Temp\Book1.xls", False, True, "Excel 8.0; HDR=NO; IMEX=1;")
“
- 在ReadAllLines方法中如何区分换行和回车?
- 如何读取excel(.xlsm)文件,该文件是使用finansu加载项通过C#
- 有没有办法将excel文件导入数据网格视图,而没有安装Excel或Access数据库引擎?
- c#wpf导入excel性能
- Microsoft.Office.Interop.Excel不使用索引添加新行
- 如何在asp.net中使用C#将使用jQuery flotdynamic生成的图表导出到Excel中?
- 我得到逗号分隔符在Excel中的单元格在c#中的点
- 在C#中使用CreateOpenXmlReader读取openoffice的ods文件
- 如何阅读公式的今天(),使用C#的Excel单元格?