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 が結合されている場合、セルの数は2 ではなく 3になります。
次を使用して、シート内のすべての結合セルのリストを抽出できます。
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