簡體   English   中英

C#Excel文件OLEDB讀取HTML導入

[英]C# Excel file OLEDB read HTML IMPORT

我必須為財務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設置為“ Excel 8.0” 讀取新的xls。

是的,我可以通過創建Excel實例來讀取文件,但是我不能。.知道如何使用OleDb讀取xls而不手動更改xls或通過實例化的Excel來玩嗎?

問候,

米歇爾

我在另一個論壇上問了同樣的問題,得到了答案,所以我想在這里分享。 根據這篇文章: http : //ewbi.blogs.com/develops/2006/12/reading_html_ta.html

您必須在select語句中使用不帶$的頁面標題,而不要使用工作表名稱。 選擇*從[HTMLPageTitle]

我一直在尋找很多解決方案,最終我發現了一些非常簡單的方法-將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文件。

希望這可以節省您的工作。

我遇到了同樣的問題。 如前所述,它似乎是一個重命名為.xls的html文件。 將數據從xls復制到新的xls時,可以將EP設置為“ Excel 8.0”來讀取新的xls。

在這種情況下,文件無法以正確的格式保存。 因此,我們必須將該文件轉換為正確的格式。 為此,請使用MS Office Excel 2007,單擊File -> Convert 文件將自動轉換為正確的格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM