我需要知道如何使用 OpenXML 获取 Row 对象中的单元格数。目前,我正在使用
row.Descendants<Cell>().Count<Cell>()
但这根本不正确。任何想法什么方法/属性给了我细胞计数?
您可以使用以下方法之一获取计数:
row.Descendants<Cell>().Count<Cell>() //The one you used
row.Elements<Cell>().Count<Cell>()
row.Count()
我测试了所有这些,它们工作正常。在验证返回计数的正确性时,请记住以下几点:
- 隐藏列包含在计算中
- 合并的单元格单独计算。如果您的 Excel 工作表包含3 列 A、B 和 C,但 A 和 B 已合并,则单元格数为3 而不是 2
您可以使用以下方法提取工作表中所有合并单元格的列表:
SpreadsheetDocument ExcelSpreadSheet = SpreadsheetDocument.Open(ReportFile, true);
WorksheetPart ExcelWSP = GetWorksheetPartByName(ExcelSpreadSheet, TemplateEntity.ExcelSheetName);
MergeCells mergeList = ExcelWSP.Worksheet.Elements<MergeCells>().First();
合并信息保存在 Reference 属性中,您可以使用以下命令访问它:
((MergeCell)mergeList.ElementAt(i)).Reference