如何从使用OpenXML和C#的Excel文档中的合并单元格中获取值
我有合并单元格的问题。 如果我在第一个单元格(B3)中具有值,并且此单元格与其他某些单元格(例如C3,D3,E3,F3,F4)合并在一起 – 在Excel文档中,我只能看到一个值。 这是伟大的,但我想从我的GetCellValue函数获得相同的B3值,当我要求C3,D3,E3,F3值。
我想有必要find所有合并单元格列表,并从第一个值读取值 – 但如何使用OpenXml做到这一点?
public string GetCellValue(char ch, int y) { WorksheetPart wsPart = GetWorksheetPart(_sheetName); var addressName = new StringValue(ch + "" + y); Cell cell = wsPart.Worksheet.Descendants<Cell>(). Where(c => c.CellReference.Value == addressName).FirstOrDefault(); if (cell == null) return null; return cell.InnerText; }
更新:
我find了部分解决scheme(在OpenXML中查找合并的列名):
List<MergeCells> mergeCells; WorksheetPart wsPart = GetWorksheetPart(_sheetName); if (wsPart.Worksheet.Elements<MergeCells>().Count() > 0) { mergeCells = wsPart.Worksheet.Elements<MergeCells>().ToList(); string cells = mergeCells[0].OuterXml; }
if (wsPart.Worksheet.Elements<MergeCells>().Count() > 0) { MergeCells mergeCells = wsPart.Worksheet.Elements<MergeCells>().First(); foreach (MergeCell mergeCell in mergeCells) { // mergeCell. } }