上次说到,用OleDb方式操作Excel文件,可不可以知道这个文件中到底有几个工作表,每个工作表叫什么名字呢?
答案自然是:有的。
上面的链接是MSDN中对OleDbConnection.GetOleDbSchemaTable进行说明的页面,可以了解比较详细的信息,如果想知道关于工作表的信息,可以这样做:
using System.Data;
using System.Data.OleDb;
...
// strConn是已经写好的连接字符串
OleDbConnection conn = new OleDbConnection(strConn);
// 调用下面的语句前(GetOleDbSchemaTable),要求先打开这个文件
conn.Open();
// 获得excel文件的各个表单(sheet)的名字,提高兼容性
// 先获取TABLE信息
// 按照我的理解,TABLE对应于Excel文件来说,就是工作表
DataTable xlsTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new object[] { null, null, null, "TABLE" });
// 读取工作表的名称
List<string> sheetList = new List<string>();
foreach (DataRow sheetRow in xlsTable.Rows)
{
sheetList.Add(sheetRow["TABLE_NAME"].ToString());
}
...
conn.Close();
这样,工作表名称就放在sheetList里面了。需要注意的是,读出的工作表名称天然地带有$符号<