Import Excel to DataTable string#39;s are empty(将 Excel 导入 DataTable 字符串为空)
问题描述
要将excel导入数据表,我使用的是简单的代码:
To import excel to datatable, I am using the simple code:
string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=Excel 12.0;", physicalFolder + FileUpload1.FileName);
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
DataSet ds = new DataSet();
在excel的某一行中,如果我的行如下所示
When in one of the rows of excel, if my row looks like below
省略了字符串,我的数据集如下所示
strings are ommited and my data set looks like this
但是,如果我添加一些字符串并且我的上传看起来像这样:
However if I add some strings and if my upload looks like this:
然后我的数据集看起来没有省略字符串:
Then my dataset looks like it does not omit the strings:
推荐答案
这是因为提供者从列的第一行(标题行之后的行)决定列的类型.当第一行包含数字时,列的类型为double
或其他数字类型,因此不能包含字符串值.
This is because the provider decides on the type of the column from first row of the column (the row after the header row). When first row contains a number, the type of column is double
or another number type, so it cannot contain string values.
我尝试了所有可能的方法(预先设置表结构,使用 DataReader
,更改单元格的格式,...)但都失败了.这似乎是 Microsoft.Jet.OLEDB
提供程序的问题.我强烈建议您使用第三方的 Excel 阅读库.有大量可用的开源库.
I tried every possible way (setting the table structure beforehand, using a DataReader
, changing the format of the cell, ...) and they all failed. It seem to be the problem with Microsoft.Jet.OLEDB
provider. I highly recomment you to use a third party excel reading library. There are plenty of open source libraries available.
如果您的文件是 Excel 2007 (.xlsx) 文件,我强烈建议使用 EPPluse.它也可用作 NuGet 包.
If your file is a Excel 2007 (.xlsx) file, I highly recommend using EPPluse. It is also available as a NuGet package.
否则,您可以查看this answer以查找更多库.
Otherwise, you can take a look at this answer to find a few more libraries.
这篇关于将 Excel 导入 DataTable 字符串为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 Excel 导入 DataTable 字符串为空
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 输入按键事件处理程序 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01