【发布时间】:2017-11-01 09:07:40
【问题描述】:
在 Excel 中,有一个功能可以隐藏一些工作表。我正在阅读包含此类表格的文档,我想忽略它们。
这是我可以隐藏或取消隐藏工作表的地方:
- 在“开始”选项卡的“单元格”组中,单击“格式”。
- 在可见性下,单击隐藏和取消隐藏,然后单击取消隐藏工作表。
如何使用ExcelDataReader 在 Excel 中获取仅 Excel 可见的工作表名称列表?
【问题讨论】:
标签: c# excel exceldatareader
在 Excel 中,有一个功能可以隐藏一些工作表。我正在阅读包含此类表格的文档,我想忽略它们。
这是我可以隐藏或取消隐藏工作表的地方:
如何使用ExcelDataReader 在 Excel 中获取仅 Excel 可见的工作表名称列表?
【问题讨论】:
标签: c# excel exceldatareader
如果使用阅读器界面,IExcelDataReader.VisibleState 属性会返回当前阅读工作表的可见性状态。
如果使用.AsDataSet(),则可以从DataTable.ExtendedProperties["visiblestate"] 中检索到相同的值
【讨论】:
如何使用
ExcelDataReader获取 Excel 中可见工作表名称的列表?
// Prepare your reader by
var stream = File.Open(yourExcelFilename, FileMode.Open, FileAccess.Read);
var excelDataReader = ExcelDataReader.ExcelReaderFactory.CreateOpenXmlReader(stream);
// This variable will store visible worksheet names
List<string> visibleWorksheetNames;
// Use a loop to read workbook
visibleWorksheetNames = new List<string>();
for (var i = 0; i < excelDataReader.ResultsCount; i++)
{
// checking visible state
if (excelDataReader.VisibleState == "visible")
{
visibleWorksheetNames.Add(excelDataReader.Name);
}
excelDataReader.NextResult();
}
【讨论】:
只读数据集的可见工作表:
using (var stream = File.Open("test.xlsx", FileMode.Open, FileAccess.Read))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
var ds = reader.AsDataSet(new ExcelDataSetConfiguration()
{
FilterSheet = (tableReader, sheetIndex) => tableReader.VisibleState == "visible",
});
}
}
【讨论】: