簡體   English   中英

如何在C#中使用OpenXML在Excel中隱藏行?

[英]How to hide rows in Excel using OpenXML in C#?

如果我們可以使用C#中的OpenXML在Excel中隱藏空白行,則我做了很多嘗試來尋找解決方案。 如果有人對此有解決方案,則如果您共享它將會有很大幫助。

我有一個“摘要”頁面,其中包含“ A1:B7”單元格中的數據。 我想隱藏從第8到最后一個1048576的行。 我正在嘗試像:

WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
workbookPart.Workbook = new Workbook();

WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet();

SheetData sheetData = new SheetData();
Row emptyRow = new Row();
emptyRow.Hidden = true;
sheetData.Append(emptyRow);

worksheetPart.Worksheet.Append(sheetData);

Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());

Sheet sheet = new Sheet();
sheets.Append(sheet);

worksheetPart.Worksheet.Save();

預期結果:應該隱藏從8到1048576的所有行。

如果尚未下載OpenXMLSDKTool,請下載它,將未隱藏行的文件與隱藏行的文件進行比較,我相信它應該向您顯示xml以及用於生成它的c#的區別。

您可以創建具有8到1048576個RowIndex值的隱藏的Row對象,並將它們添加到sheetData 但是,這將導致很大的Excel文件。

一種更好的優化方法是在工作表的格式設置屬性中定義默認情況下隱藏行,並且僅在指定時可見。

例如,如下所示:

using (var spreadsheetDocument = SpreadsheetDocument.Create(filePath,
    SpreadsheetDocumentType.Workbook))
{
    var workbookpart = spreadsheetDocument.AddWorkbookPart();
    workbookpart.Workbook = new Workbook();

    var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet();

    workbookpart.Workbook
        .AppendChild(new Sheets())
            .AppendChild(new Sheet()
            {
                Id = workbookpart.GetIdOfPart(worksheetPart),
                SheetId = 1,
                Name = "Sheet 1",
            });

    var sheetFormatProperties = new SheetFormatProperties()
    {
        DefaultRowHeight = 15,
        ZeroHeight = true
    };
    var sheetData = new SheetData();
    worksheetPart.Worksheet.Append(sheetFormatProperties, sheetData);

    // Add first 8th visible rows, the rest will be hidden.
    for (uint i = 1; i < 8; i++)
    {
        var row = new Row() { RowIndex = i };
        sheetData.Append(row);

        // Add cells to row ...
    }
}

暫無
暫無

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

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