c# - Oledb 阅读器无法正确读取 excel 文件

标签 c# winforms excel oledb

我正在尝试通过 OLEDB 阅读器读取 xls 文件,在 xls 的一列中使用混合数据类型。 Oledb 为这些列值返回 DBNULL。我在本栏的第一个单元格中有 05-06-12。当我去检查格式单元格时,它显示 自定义类型与 dd-mm-yy 并且在所有其他单元格中它显示通用格式。我正在使用以下连接字符串

mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + mstrFilePath + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";");

我在 xls 中有以下数据

  • 05-06-12
  • > 'abc'
  • '56565'

OLEDB 是这样读的

  • 2012 年 6 月 5 日
  • DBNULL
  • DBNULL

可能是什么原因?甚至我把 IMEX = 1 放在连接字符串中!!!

最佳答案

我在读取 xlsx 文件时遇到了类似的问题。我将连接字符串更改为以下内容并且有效:

const string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel.xlsx;" +"Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;TypeGuessRows=0;ImportMixedTypes=Text\"";

您需要将 xls 转换为 xlsx 并使用

Microsoft.ACE.OLEDB.12.0

读取 xlsx 文件。

关于c# - Oledb 阅读器无法正确读取 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144866/

相关文章:

c# - Console.Read() 和 Console.ReadLine() FormatException

c# - Control.ParentChanged 事件何时发生?

excel - 将变量的内容复制到剪贴板 VBA (Excel 2013)

excel - 从 SAP 中提取数据的 VBA 一般方法

c# - 通过在父级上呈现新的 View Controller viewWillDisappear 被触发,我取消订阅事件

c# - 当前上下文中不存在名称 'temp'(C# 桌面应用程序)

c# - 如何从 WinForms 中的文本框移除焦点?

excel - 尝试创建一个表,其中列是 ID,行包含是/否,具体取决于特定文本是否链接到 ID

c# - .NET 异步,单线程可以在任务之间划分时间片吗?

.net - 在 datagridview 中禁用单元格突出显示