【问题标题】:Reading integers from Excel using oledb使用 oledb 从 Excel 中读取整数
【发布时间】:2010-10-24 17:57:36
【问题描述】:

我正在使用 oledb 从 excel 文件中读取数据并将其存储在数据集中。 我的excel文件内容如下:

0    0    somestring somestring
500  200  somestring somestring

当我检查我的数据集的内容时,第 1 列和第 2 列的值不是存储为整数,而是存储为 DateTime 值。

如何将其存储为整数值而不是 DateTime?

【问题讨论】:

  • 更新:我在网上搜索并找到了这个:dotnet247.com/247reference/msgs/37/187667.aspx。显然,设置 IMEX=1 只会确保应用注册表设置。我更改了以下注册表项,现在它可以工作了:Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows = 0

标签: c# excel


【解决方案1】:

您是否尝试将 IMEX=1 添加到您的 OLEDB 连接字符串?

【讨论】:

  • 跟进您的回答并找到了解决方案(请参阅上面的更新)。 tnx.
【解决方案2】:

你确定它是一个数字吗?以下可能是几个选项:

  1. 右键单击excel中的列并将格式更改为文本/自定义。
  2. 查看 NamedRange.FormatConditions 属性;从 excel 读取数据时更改数据格式,请参阅MSDN
  3. 或者尝试删除范围内的现有格式:

也就是说,

Excel.Worksheet sheet = this.Application.ActiveSheet as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", "A5") as Excel.Range; 

//delete previous validation rules  
range.Validation.Delete();

【讨论】:

    【解决方案3】:

    您可以使用像 SpreadsheetGear for .NET 这样的第 3 方组件,无论单元格格式如何,您都可以获取单元格的基础值(使用 IWorkbook.Worksheets["MySheet"].Cells[rowIndex, colIndex].Value),或者您可以使用 IRange.Text 获得格式化结果。

    您可以查看实时 ASP.NET 示例here 并下载免费试用版here

    免责声明:我赢得了 SpreadsheetGear LLC

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多