我正在使用C#在.Net Framework 1.1中阅读Excel文件。当我有包含数字的列以及类似这样的文本
时,我在阅读Excel文件时遇到问题1003 1004 1005 Test_1 Test_2
它没有给我任何错误,但我在前三行获得空值。 这是我用来读取excel文件的代码。
string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
path +
";Extended Properties=Excel 8.0;";
System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(strcon);
try
{
objConn.Open ();
System.Data.OleDb.OleDbDataAdapter objadp = new System.Data.OleDb.OleDbDataAdapter("Select * from [" + sheetName + "$" + "]",objConn);
DataSet ds = new DataSet ();
objadp.Fill (ds);
return ds;
}
catch(Exception ex)
{
throw ex;
}
finally
{
objConn.Close();
objConn.Dispose();
}
任何人都可以告诉我什么是问题吗?感谢。
答案 0 :(得分:1)
我的机器上没有安装.NET 1.1,但能够重现安装.NET 2.0的问题。 我稍微修改了连接字符串,现在能够读取文本值。
string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"C:\Documents and Settings\johnsond\Desktop\Book1.xls" +
@";Extended Properties=" + Convert.ToChar(34).ToString() + @"Excel 8.0;Imex=1;HDR=Yes;"
+ Convert.ToChar(34).ToString();
从Microsoft论坛引用问题似乎是由于以下原因:
您遇到的问题很常见,因为Excel不是真正的数据库,而且列没有固定的数据类型。 Jet OLEDB的设计并不专门用于Excel并具有这些限制。
不太有说服力我知道:-)此外,如果你想将这些数据写入excel,它会变得更加复杂。 进一步阅读: MSDN Forum Link
或者你也可以使用“Excel.Application Object”来操作工作表,因为它们在SO之前就已经过了。
如果你有兴趣,请检查一下: 的 Read Excel using Excel.Application 强>
干杯!