gpt4 book ai didi

c# - OleDbDataReader 看不到单元格 (.xlsx) 中的数据

转载 作者:行者123 更新时间:2023-11-30 21:05:56 26 4
gpt4 key购买 nike

读取 xlsx 文件时遇到一个非常奇怪的问题(我正在使用 OleDbDataReader)。

我有一列包含以下数据:

  • 50595855
  • 59528522
  • C_213154
  • 23141411

问题是,当我阅读本专栏时,读者向我显示第三行是空的。 Excel 中的列格式设置为“常规”。但是当我将格式设置为“文本”时,一切正常,读者可以看到该行中的数据。

所以为了实验,我在前两行前面加上了字母,让它看起来像下面这样:

  • C_50595855
  • C_59528522
  • C_213154
  • 23141411

即使列格式设置为“常规”,读者也能毫无问题地阅读所有内容。

所以 Excel 显然在加载数据之前以某种方式分析了列中的数据,并且当列的第一个单元格看起来像数字而其余一些单元格是文本时,它会感到困惑。

这对我来说真的很奇怪,因为单元格中要么有数据,要么没有。

有人知道为什么会这样吗?

任何帮助将不胜感激。

问候,伊戈尔

最佳答案

正如您推测的那样,这是由混合数据类型引起的问题。如果您搜索“OleDBDataReader 混合类型”,您会得到一些答案。这是一个 MSDN page描述了问题:

“这个问题是由 Excel ISAM 驱动程序的限制引起的,因为一旦它确定了 Excel 列的数据类型,它将为任何不属于 ISAM 驱动程序默认数据类型的值返回 Null Excel 列。Excel ISAM 驱动程序通过检查前几行中的实际值来确定 Excel 列的数据类型,然后选择代表其采样中大多数值的数据类型。”

...和解决方案:

“确保Excel中的数据以文本形式输入。仅将Excel列重新格式化为文本是无法实现的。您必须在重新格式化Excel列后重新输入现有值。在Excel中,您可以使用F5重新- 在所选单元格中输入现有值。

您可以添加选项 IMEX=1;到 OpenDatabase 方法中的 Excel 连接字符串。例如:

Set Db = OpenDatabase("C:\Temp\Book1.xls", False, True, "Excel 8.0; HDR=NO; IMEX=1;")

关于c# - OleDbDataReader 看不到单元格 (.xlsx) 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11430239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com