使用OpenXML创build合并单元格

请考虑这个Excel:

在这里输入图像说明

它是XML:

在这里输入图像说明

我想要使​​用OpenXML创build具有多个合并单元格的Excel。

我怎么能做到这一点?

谢谢

您可以使用MergeCellsMergeCell类来创build所需的合并单元格。 MergeCells类是合并单元的集合(您的XML中的<mergeCells count="3"> ), MergeCell类代表每个单独的合并单元集合(XML中的<mergeCell ref="xx:xx" /> )。 要填充合并的单元格中的数据,您需要将该值添加到最左上angular的单元格; 任何其他值将被忽略。

下面的代码将创build一个合并单元格的新文件。

 using (SpreadsheetDocument myDoc = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookpart = myDoc.AddWorkbookPart(); workbookpart.Workbook = new Workbook(); // Add a WorksheetPart to the WorkbookPart. WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>(); SheetData sheetData = new SheetData(); //add a row Row firstRow = new Row(); firstRow.RowIndex = (UInt32)1; //create a cell in C1 (the upper left most cell of the merged cells) Cell dataCell = new Cell(); dataCell.CellReference = "C1"; CellValue cellValue = new CellValue(); cellValue.Text = "99999"; dataCell.Append(cellValue); firstRow.AppendChild(dataCell); sheetData.AppendChild(firstRow); // Add a WorkbookPart to the document. worksheetPart.Worksheet = new Worksheet(sheetData); //create a MergeCells class to hold each MergeCell MergeCells mergeCells = new MergeCells(); //append a MergeCell to the mergeCells for each set of merged cells mergeCells.Append(new MergeCell() { Reference = new StringValue("C1:F1") }); mergeCells.Append(new MergeCell() { Reference = new StringValue("A3:B3") }); mergeCells.Append(new MergeCell() { Reference = new StringValue("G5:K5") }); worksheetPart.Worksheet.InsertAfter(mergeCells, worksheetPart.Worksheet.Elements<SheetData>().First()); //this is the part that was missing from your code Sheets sheets = myDoc.WorkbookPart.Workbook.AppendChild(new Sheets()); sheets.AppendChild(new Sheet() { Id = myDoc.WorkbookPart.GetIdOfPart(myDoc.WorkbookPart.WorksheetParts.First()), SheetId = 1, Name = "Sheet1" }); } 

上面的代码产生:

在这里输入图像描述