无论使用OleDb的工作表名称,从Excel文档获取第一张工作表

nas*_*ski 30 .net oledb

我有用户将他们的表单命名为各种疯狂的东西,但我希望能够获得Excel文档的第一张表,无论它的名称是什么.

我目前使用:

OleDbDataAdapter adapter = new OleDbDataAdapter(
"SELECT * FROM [sheetName$]", connString);
Run Code Online (Sandbox Code Playgroud)

无论它的名字是什么,我如何获得第一张纸?

谢谢.

nas*_*ski 30

最终使用这个:

using (OleDbConnection conn = new OleDbConnection(connString))
{
    conn.Open();
    dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
    Sheet1= dtSchema.Rows[0].Field<string>("TABLE_NAME");
}
Run Code Online (Sandbox Code Playgroud)


小智 18

OleDbConnection oconn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="Path"; Extended Properties=Excel 12.0;Persist Security Info=False;");

oconn.Open();
myCommand.Connection = oconn;
DataTable dbSchema = oconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,  null);
if (dbSchema == null || dbSchema.Rows.Count < 1)
{
    throw new Exception("Error: Could not determine the name of the first worksheet.");
}
string firstSheetName = dbSchema.Rows[0]["TABLE_NAME"].ToString();
Run Code Online (Sandbox Code Playgroud)

  • 根据我的测试,这将按字母顺序返回第一张工作表,而不是根据它们在工作簿中出现的顺序(从左到右)返回第一张工作表。 (3认同)