代码如下: (取出当前指定的 Excel下的所有Sheet名)
   string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
            OleDbConnection conn = new OleDbConnection(strConn);            conn.Open();            //返回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();
            }
            return strTableNames;
调用时 问题出来了 。返回的结果是:生产管理科$
生产管理科$_FilterDatabase
生日汇总$
制造一科$
制造一科$_FilterDatabase
制造二科$
制造二科$_FilterDatabase
总务科$
总务科$_FilterDatabase
Sheet1$
Sheet1$_FilterDatabase
技术科$
技术科$_FilterDatabase
品质管理科$
品质管理科$_FilterDatabase
参保人员统计$问题:有的片段根本不存在(品质管理科$_FilterDatabase) 那么它又代表这什么,我只想取所有的片段,不要后面带_FilterDatabase ,有高人指点下,谢谢或者我调用的方法是否有问题呢 ?

解决方案 »

  1.   

    _FilterDatabase。这是在打开 AutoFilter时,Excel 在工作簿中创建的隐藏命名区域。
    查询时都找出来了.在C#中处理时,可以把以"_FilterDatabase"结尾的表过过滤掉,不用处理.
      

  2.   

      for   each   exSheet   in   exApp.Application.Workbooks(name).Sheets   
              exSheet.   ...   '这里引用对该工作表的操作   
              ...   
      next   
      

  3.   

    参考
    为 AutoFilter 结果创建智能标记和事件代码
      

  4.   


    除了_FilterDatabase 还会出现别的么 ? 都有什么 。
      

  5.   

    楼主的EXCEL表中,是否用过统计图,_FilterDatabase统计图一定用到这种格式。
    别的邮件合并、透视图等就不知道了,你可以测试一下。
      

  6.   

    得出的结果是对的,是Excel文件存在隐藏内容。楼主可以使用Data Import/Export试试,也会有那些Sheet,只是楼主可以用代码过滤掉不想要的Sheet名。
      

  7.   

    操作EXCEL还是建议楼主使用ASPOSE.CELL很好用的商业组件,我现在就在用。
      

  8.   

    我也遇到这个问题了!目前没有找到解决办法,我想可以这样:把以“_FilterDatabase”结尾的表取出掉!