如何在Excel中找出隐藏的工作表名称

时间:2011-11-28 16:12:36

标签: c# asp.net .net vb.net excel

如何在C#中使用ADO(OLEDB)找出隐藏的Excel工作表名称?

在我的Excel工作簿中,有很多工作表。只有一个Excel工作表处于隐藏模式。我需要找出隐藏床单的名称。我的代码找到隐藏和可见的工作表。

这是我查找所有工作表的Excel工作表名称的代码。是否有可能/任何人都可以告诉我如何在不使用C#中的Interop服务的情况下找出隐藏的Excel工作表名称?

connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile + ";Extended Properties=\"Excel 12.0;;IMEX=1;HDR=YES\"";
query = String.Format("SELECT * FROM [{0}", fileName + "]");
OleDbCommand objCmd = new OleDbCommand(query, objCon);
OleDbDataAdapter adap = new OleDbDataAdapter(objCmd);
adap.FillSchema(dtExcelSchema, SchemaType.Mapped);
adap.Fill(dsExecelData);

2 个答案:

答案 0 :(得分:1)

post适用于我

using Excel = Microsoft.Office.Interop.Excel;

...

Excel.Application xlAppSource = null;
Excel.Workbook xlWorkBookSource = null;


// workbook
xlWorkBookSource = xlAppSource.Workbooks.Open(xlsFilePath, 0, false, 5, null, null, false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, null, true, false, 0, true, false, false);

// here is your list
List<int> list = getHiddenSheetsIndexes(xlWorkBookSource.Worksheets);

...

private List<int> getHiddenSheetsIndexes(Excel.Sheets sheets) 
{
    // return
    List<int> indexes = new List<int>();

    int index = 0;

    foreach (Excel.Worksheet sheet in sheets)
    {
        index++;

        if (sheet.Visible == Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetHidden)
            indexes.Add(index);

    }

    // return
    return indexes;
}

答案 1 :(得分:0)

如果工作表名称以下划线(_)结尾,则隐藏它。常规工作表名称将以美元符号($)结尾。