【发布时间】:2010-05-16 16:29:50
【问题描述】:
我正在使用 C# 和 OleDB (12.0) 读取一个 excel 文件。在那里,我必须用我希望阅读的工作表的名称来指定 select 语句 ([Sheet1$])。
this.dataAdapter =
new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
是否可以选择第一张表,无论名称是什么?
谢谢。
【问题讨论】:
我正在使用 C# 和 OleDB (12.0) 读取一个 excel 文件。在那里,我必须用我希望阅读的工作表的名称来指定 select 语句 ([Sheet1$])。
this.dataAdapter =
new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
是否可以选择第一张表,无论名称是什么?
谢谢。
【问题讨论】:
请参阅此答案以了解如何按顺序获取工作表名称列表:Using Excel OleDb to get sheet names IN SHEET ORDER
这是我的版本,稍微短一点:
public static IEnumerable<string> GetExcelSheetNames(string excelFile)
{
var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
using (var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
{
return (dt ?? new DataTable())
.Rows
.Cast<DataRow>()
.Select(row => row["TABLE_NAME"].ToString());
}
}
}
【讨论】: