Open XML 检索 EXCEL

1、Excel 隐藏行判断

     项目的 Hidden 属性不为 null,且 Hidden 属性的值为 True

1 var itemList = ws.Descendants<Row>().
2       Where((r) => r.Hidden != null && r.Hidden.Value).
3       Select(r => r.RowIndex.Value).ToList<uint>();

2、隐藏列的检索

    检索隐藏列的列表会更复杂一些,这是因为 Excel 会将隐藏列的组折叠成一个元素,并会提供 Min 和 Max 属性来描述组中的第一列和最后一列。因此,虽然检索隐藏列的列表的代码首先执行的操作与检索隐藏行的代码首先执行的操作相同,但它必须循环访问索引值(循环访问隐藏列集合中的每个项,并添加介于 Min 和 Max 值(包含这两个值)之间的每个索引)。

1 var cols = ws.Descendants<Column>().
2   Where((c) => c.Hidden != null && c.Hidden.Value);
3 foreach (Column item in cols)
4 {
5   for (uint i = item.Min.Value; i <= item.Max.Value; i++)
6   {
7     itemList.Add(i);
8   }
9 }

3、隐藏Sheet的判断

    Sheet的Sheet.State == null 或者 State.Value == SheetStateValues.Visible 为显示;

    State.Value 为 SheetStateValues.Hidden 或者 SheetStateValues.VeryHidden 为隐藏

private static uint GetIndexOfFirstVisibleSheet(Sheets sheets)
{
  uint index = 0;
  foreach (Sheet currentSheet in sheets.Descendants<Sheet>())
  {
    if (currentSheet.State == null || currentSheet.State.Value == SheetStateValues.Visible)
    {
      return index;
    }
    index++;
  }
  throw new Exception("No visible sheet found.");
}

 

posted on 2017-10-31 13:48  夜雨梧桐  阅读(317)  评论(0编辑  收藏  举报

导航