使用OpenXML创build合并单元格
请考虑这个Excel:
它是XML:
我想要使用OpenXML创build具有多个合并单元格的Excel。
我怎么能做到这一点?
谢谢
您可以使用MergeCells
和MergeCell
类来创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" }); }
上面的代码产生: