【发布时间】:2018-02-08 04:57:14
【问题描述】:
我正在使用 OpenXML 库将 excelsheet(.xslx) 导入使用 C# 的 DataTable。
xlsx 的第一行包含列名,所以我开始在 DataTable 中添加列:
foreach (Cell cell in row.Descendants<Cell>())
{
dt.Columns.Add(GetXlsxCellValue(sharedStringTableList, cell));
}
然后我循环所有其他行,并以与当前行中的任何单元格类似的方式将任何单行添加到我的 DataTable 中来填充 DataTable。
现在,假设我的 excel 有两个这样的列
第一行包含列名,因此第一个单元格有一个 DataType = string(文本存储在 sharedStringTableList 中)。
所有其他行仅在第一列中包含数字(并且,在 excel 中,整个列的格式也为“数字”)。
最后,在我的 DataTable 中,第一列具有正确的名称(“数字”),但列 DataType 是 STRING。
问题:如何在开始时使用 xlsx 中设置的正确列 DataType 创建我的 DataTable? 方法“Columns.Add()”允许您指定列数据类型,但在第一行所有单元格都有 DataType = string,所以我需要以其他方式检查列数据类型。
提前致谢,
安德烈亚
...
【问题讨论】:
-
您使用 OpenXML 的动机是什么?为什么不直接使用旧的 Microsoft.Jet.OLEDB 提供程序?
-
嗨 Kostya,我的动机是规范项目 :) 可能我需要使用 OpenXML 来导入数据,而无需在每台机器上安装 excel
-
其实你不需要安装 MS Office 或 Excel 就可以使用前面提到的 OLEDB 提供程序。
-
你确定 Kostya 吗?我刚刚在我的电脑上进行了尝试(未安装 excel)并收到此错误消息:“'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。”
-
您仍然需要安装 OLDB 驱动程序,但我记得不需要 Excel。 microsoft.com/en-us/download/details.aspx?id=54920
标签: c# excel datatable openxml xlsx