C#Excel文件OLEDB读取HTML IMPORT

时间:2009-08-06 12:10:39

标签: c# .net html excel oledb

我必须为财务dpt自动化。我有一个Excel文件,我想用OleDb阅读:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=A_File.xls;Extended Properties=""HTML Import;IMEX=1;""";

using (OleDbConnection connection = new OleDbConnection())
{
    using (DbCommand command = connection.CreateCommand())
    {
        connection.ConnectionString = connectionString;
        connection.Open();

        DataTable dtSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);                        
        if( (null == dtSchema) || ( dtSchema.Rows.Count <= 0 ) )                        
        {                                
            //raise exception if needed                        
        }

        command.CommandText = "SELECT * FROM [NameOfTheWorksheet$]";

        using (DbDataReader dr = command.ExecuteReader())
        {
            while (dr.Read())
            {
                //do something with the data
            }
        }
    }
}

通常connectionstring会有一个扩展属性“Excel 8.0”,但是文件无法以这种方式读取,因为它似乎是一个重命名为.xls的html文件。 当我将数据从xls复制到新的xls时,我可以用E.P.读取新的xls。设置为“Excel 8.0”。

是的,我可以通过创建Excel实例来读取文件,但我宁愿不.. 知道如何使用OleDb读取xls而不对xls进行手动更改或在实例化Excel中使用范围进行读取吗?

此致

米歇尔

3 个答案:

答案 0 :(得分:4)

我在另一个论坛上问了同样的问题并得到了答案,所以我想我会在这里分享。根据这篇文章:http://ewbi.blogs.com/develops/2006/12/reading_html_ta.html

您必须在没有$的select语句中使用页面标题,而不是使用sheetname。 SELECT * FROM [HTMLPageTitle]

答案 1 :(得分:1)

我一直在寻找这么多解决方案,最后我找到了一些非常简单易行的东西 - 要将XML文件导入Excel文件,我首先尝试将XML转换为HTML,使用 -

http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=63

然后我发现我可以轻松地将输出文件更改为.xls,而不是.html

        //create the output stream
        XmlTextWriter myWriter = new XmlTextWriter
("result.html", null);

然后输出是我的XML数据文件中的完美Excel文件。

希望这可以节省你的工作。

答案 2 :(得分:1)

我遇到了同样的问题。如前所述,它似乎是一个重命名为.xls的html文件。当我将数据从xls复制到新的xls时,我可以用E.P读取新的xls。设置为“Excel 8.0”。

在这种情况下,无法以正确的格式保存文件。所以我们必须将该文件转换为正确的格式。为此,请使用MS Office Excel 2007,单击File - &gt; Convert。该文件将自动转换为正确的格式。