C#的Excel文件OLEDB读取HTML IMPORT(C# Excel file OLEDB r

2019-06-28 06:15发布

我有一些自动化的财务DPT。 我已经得到了我想要使用的OleDb读取Excel文件:

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,我可以读与EP设定为“创先争优8.0”的新XLS。

是的,我可以通过创建一个Excel的实例读取该文件,但我宁愿不..任何想法如何我可以读取使用OleDb的,而无需对XLS手动更改或通过在实例化Excel区域打XLS?

问候,

米歇尔

Answer 1:

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

除了使用SHEETNAME的,你必须使用select语句的网页标题,而不$。 SELECT * FROM [HTMLPageTitle]



Answer 2:

我一直在寻找这么多的解决方案,最终我找到了非常简单和容易的东西 - 导入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文件。

希望这将节省乌尔工作。



Answer 3:

我遇到了同样的问题。 正如前面提到的,这似乎是重命名为.xls的html文件。 当我从XLS中的数据复制到一个新的XLS,我可以读与EP设定为“创先争优8.0”的新XLS。

在这种情况下,该文件无法保存正确的格式。 因此,我们必须将该文件转换为正确的格式。 要做到这一点,使用MS Office Excel 2007中,点击File - > Convert 。 该文件将被自动转换成正确的格式。



文章来源: C# Excel file OLEDB read HTML IMPORT