C# 使用OpenXml生成Excel时无法合并多个单元格问题求助
Excel合并单元格不生效问题解决方法
核心错误原因
你当前的问题是把MergeCells对象挂载到了SheetData下,不符合Office Open XML的文件结构规范:MergeCells是Worksheet的直接子节点,需要和SheetData同级,放在SheetData的后面,Excel才可以正常识别合并单元格规则。
修正方案
修改合并单元格的挂载位置,代码调整如下:
SheetData sheetData = new SheetData(); Row headers = new Row(); headers.Append(new Cell { CellValue = new CellValue("Losses"), DataType = CellValues.String, StyleIndex = 2U, CellReference = new StringValue("A1") }); headers.Append(new Cell { CellValue = new CellValue("Target"), DataType = CellValues.String, StyleIndex = 2U, CellReference = new StringValue("F1"), }); sheetData.Append(headers); // creating headers in one row sheetData.Append(CreateHeaderRowForExcel(type)); byte level = 1; foreach (MaterialLossDto obj in data) { sheetData.Append(AddRowsRecursion(obj, ref level, sheetData)); } // 先将填充好的SheetData添加到Worksheet worksheet.Append(sheetData); // 再创建MergeCells集合,添加到Worksheet(不是SheetData) MergeCells mergeCells = new MergeCells(); mergeCells.Append(new MergeCell() {Reference = new StringValue("A1:D1")}); mergeCells.Append(new MergeCell() {Reference = new StringValue("F1:G1")}); worksheet.Append(mergeCells);
其他需要检查的点
- 确认合并区域内仅左上角单元格有值,其他位置的单元格不要填充内容,避免覆盖显示
- 确认你使用的
StyleIndex=2U对应的样式在全局样式表中存在,样式定义缺失可能导致单元格解析异常 - 确认合并区域的Reference格式正确,列号行号没有拼写错误
内容的提问来源于stack exchange,提问作者deddoest
相关产品推荐
相关产品推荐

