source

OpenXML을 사용하여 병합 셀 만들기

bestscript 2023. 9. 17. 17:51

OpenXML을 사용하여 병합 셀 만들기

이 Excel을 고려해 주시기 바랍니다.

enter image description here

XML입니다.

enter image description here

저는 OpenXML을 사용하여 여러 개의 병합된 셀이 있는 엑셀을 만들고 싶습니다.

이거 어떻게 해요?

감사해요.

과 클래스를 사용하여 필요한 병합 셀을 생성할 수 있습니다.MergeCellsclass는 병합 셀의 집합입니다(<mergeCells count="3">사용자의 XML) 및MergeCellclass는 병합된 각 셀 집합을 나타냅니다. (<mergeCell ref="xx:xx" />사용자의 XML)에 저장합니다.병합된 셀에 데이터를 채우려면 왼쪽 상단 대부분의 셀에 값을 추가해야 합니다. 다른 값은 무시됩니다.

다음 코드는 병합된 셀로 새 파일을 만듭니다.

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"
    });
}

위의 코드는 다음을 생성합니다.

enter image description here

언급URL : https://stackoverflow.com/questions/37182232/create-merge-cells-using-openxml