如何使用OpenXML和C#从Excel文档中的合并单元格中获取值

本文关键字:合并 单元格 获取 文档 Excel OpenXML 何使用 | 更新日期: 2023-09-27 18:00:54

我对合并的单元格有问题。如果我在第一个单元格(B3(中有值,并且这个单元格与其他一些单元格(例如C3、D3、E3、F3、F4(合并,那么在Excel文档中,我只能看到一个值。这很好,但当我要求C3、D3、E3、F3值时,我希望从GetCellValue函数中获得相同的B3值。

我认为有必要找到所有合并的单元格列表,并从第一个单元格中读取值,但如何使用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;
    }

更新:

我找到了部分解决方案(在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;
        }

如何使用OpenXML和C#从Excel文档中的合并单元格中获取值

if (wsPart.Worksheet.Elements<MergeCells>().Count() > 0)
{
     MergeCells mergeCells = wsPart.Worksheet.Elements<MergeCells>().First();
     foreach (MergeCell mergeCell in mergeCells)
     {
         // mergeCell.
     }
}