具有多种类型的列的Excel读取问题

时间:2009-04-28 07:55:09

标签: c#

我正在使用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();                              
            }

任何人都可以告诉我什么是问题吗?感谢。

1 个答案:

答案 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

干杯!