簡體   English   中英

如何使用 DocumentFormat.OpenXML 或 ClosedXML C# 從 Excel 獲取合並單元格

[英]How to get a merged cell from Excel using DocumentFormat.OpenXML or ClosedXML C#

我需要僅使用 DocumentFormat.OpenXml 或 ClosedXML 獲取合並單元格的區域,該區域以 Excel 結尾的行號,如何為每個單元格執行此操作?

在此處輸入圖像描述

我發現這有點笨拙,但我相信這是正確的方法。

private static void GetMergedCells()
{
    var fileName = $"c:\\temp\\Data.xlsm";

    // Open the document for editing.
    using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false))
    {
        // Get the WorkbookPart object.
        var workbookPart = document.WorkbookPart;

        // Get the first worksheet in the document.  You can change this as need be.
        var worksheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault();

        // Retrieve the WorksheetPart using the Part ID from the previous "Sheet" object.
        var worksheetPart = (WorksheetPart)workbookPart.GetPartById(worksheet.Id);

        // Retrieve the MergeCells element, this will contain all MergeCell elements.
        var mergeCellsList = worksheetPart.Worksheet.Elements<MergeCells>();

        // Now loop through and spit out each range reference for the merged cells.
        // You'll need to process the range either as a string or turn it into another
        // object that gives you the end row.
        foreach (var mergeCells in mergeCellsList)
        {
            foreach (MergeCell mergeCell in mergeCells)
            {
                Console.WriteLine(mergeCell.Reference);
            }
        }
    }
}

如果你還不能說,這是使用DocumentFormat.OpenXml.Spreadsheet

使用 ClosedXML,這可以通過以下方式完成:

var ws = workbook.Worksheet("Sheet 1");
var cell = ws.Cell("A2");
var mergedRange = cell.MergedRange();
var lastCell = mergedRange.LastCell();

// or 
var lastCellAddress = mergedRange.RangeAddress.LastAddress;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM