C#Excel文件OLEDB读取HTML IMPORT

Mic*_*len 5 .net html c# oledb excel

我必须为财务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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

是的,我可以通过创建一个Excel实例来读取该文件,但我不愿意..任何想法如何使用OleDb读取xls而不需要手动更改xls或在实例化的Excel中使用范围?

问候,

米歇尔

小智 5

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

您必须在 select 语句中使用不带 $ 的页面标题,而不是使用工作表名称。从 [HTMLPageTitle] 选择 *