隐藏的工作表,怎么取得?
使用ODBC的方法读取Excel的时候,发现隐藏的工作表,没有被读取.求教,该怎么做!
代码如下:
string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
OleDbConnection conn = new OleDbConnection(strConn);
DataSet ds = new DataSet();
conn.Open();
try
{
//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等
DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null,null,null,"TABLE"});
//包含excel中表名的字符串数组
string[] strTableNames = new string[dtSheetName.Rows.Count];
for(int k=0;k<dtSheetName.Rows.Count;k++)
{
strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
//[$Print_Area],[$Print_Titles],[$_]等
bool blnRet = strTableNames[k].EndsWith( "$");
if (blnRet == false)
{
continue;
}
//从指定的表明查询数据,可先把所有表明列出来供用户选择
string strExcel ="select * from[" + strTableNames[k] + "]";
OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel,strConn);
try
{
//将Excel文件中的数据存入DataSet中
myCommand.Fill(ds, strTableNames[k].Replace("$",""));
}
catch(Exception ex)
{
throw ex;
}
finally
{
myCommand.Dispose();
}
}
}
catch(Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
return ds;