[英]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.