如何使用OLEDB读取xls文件?

问题描述 投票:0回答:2

我想使用OLEDB从xls文件中读取所有数据,但我没有任何经验。

string filename = @"C:\Users\sasa\Downloads\user-account-creation_2.xls";
string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;HDR=YES'";

using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connString))
{
    conn.Open();
    System.Data.OleDb.OleDbCommand selectCommand = new System.Data.OleDb.OleDbCommand("select * from [Sheet1$]", conn);
    System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(selectCommand);

    DataTable dt = new DataTable();
    adapter.Fill(dt);

    int counter = 0;
    foreach (DataRow row in dt.Rows)
    {
        String dataA = row["email"].ToString();
        // String dataB= row["DataB"].ToString();
        Console.WriteLine(dataA + " = ");
        counter++;
        if (counter >= 40) break;
    }
}

我想阅读电子邮件行中的所有数据

this pic phor xls file

我收到这个错误

'Sheet $'不是有效名称。确保它不包含无效字符或标点符号,并且不会太长

c# vb.net oledb xls
2个回答
0
投票

好吧,你没有名为Sheet1的表吗?您的工作表似乎被称为“用户名的电子邮件地址”,因此您的查询应该是....

Select * From ['email address from username$']

另外请不要使用Microsoft.Jet.OLEDB.4.0,因为它现在已经过时了。使用Microsoft.ACE.OLEDB.12.0。如果在扩展属性中指定Excel 12.0,它将打开.xls和.xlsx文件。

您还可以使用单行加载DataTable ...

dt.Load(new System.Data.OleDb.OleDbCommand("Select * From ['email address from username$']", conn).ExecuteReader());

要读取文件中表格的名称,请使用...

DataTable dtTablesList = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

foreach (DataRow drTable in dtTablesList.Rows)
{
    //Do Something
    //But be careful as this will also return Defined Names. i.e ranges created using the Defined Name functionality
    //Actual Sheet names end with $ or $'
    if (drTable["Table_Name"].ToString().EndsWith("$") || drTable["Table_Name"].ToString().EndsWith("$'"))
    {
        Console.WriteLine(drTable["Table_Name"]);
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.