C# 使用oledb读取excel文件-空字符串
我正在使用oledb来读取excel文件C# 使用oledb读取excel文件-空字符串,c#,excel,datatable,oledb,C#,Excel,Datatable,Oledb,我正在使用oledb来读取excel文件 DataTable sheet1 = new DataTable(); string excelCS = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";" + "Extended Properties=\"Excel 12.0 Xml;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; using (OleDb
DataTable sheet1 = new DataTable();
string excelCS = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";" + "Extended Properties=\"Excel 12.0 Xml;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\"";
using (OleDbConnection connection = new OleDbConnection(excelCS))
{
connection.Open();
string selectSql = @"SELECT * FROM [Sheet1$]";
using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectSql, connection))
{
adapter.Fill(sheet1);
}
connection.Close();
}
但是文件的某些单元格有问题
对于某些单元格,我得到一个空值,而不是文本。我试图在这些单元格中输入一些其他文本,但没有成功——我仍然得到空字符串。
但在删除列并再次插入后,我的应用程序将获得正确的单元格值。重要的是,问题不在于列中的所有单元格
这是单元格格式的问题还是其他问题?此excel文件将由另一个系统生成,因此我无法手动修改它
有人有什么问题吗?我能做什么?在连接字符串的末尾使用
IMEX=1
。那会解决你的问题
始终使用IMEX=1是为混合数据检索数据的更安全的方法
专栏。。"
请记住,有时在使用
Update
而不是Select
ing时,使用IMEX会出现一些错误。使用此方法将EXCEL转换为不带空字符串的数据集#
它将返回数据集。我遇到了这个问题。我发现,在返回空白值的单元格上,数据看起来像字符串,但其余的数据看起来像数字,因此excel将字符串存储在不同的位置作为数字。我将列格式更改为文本,并提取了所有数据
此线程可能有助于更改格式:您是否尝试了
IMEX=1
?谢谢,我是第一次这样做,但我并不知道。现在它工作得很好。非常感谢!很高兴它有帮助。请阅读了解更多有关IMEX的信息
public static DataSet ConvertExcelToDataTable(string FileName)
{
DataSet ds = new DataSet();
string strConn = "";
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + FileName + ";Extended Properties=\"Excel 8.0; HDR=YES; IMEX=1;\"";
OleDbDataAdapter da = new OleDbDataAdapter
("SELECT * FROM [Sheet1$]", strConn);
da.Fill(ds);
return ds;
}