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

时间:2019-01-18 19:57:15

标签: c# excel openxml

如果可以使用C#中的OpenXML在Excel中隐藏空白行,我做了很多尝试来寻找解决方案。如果有人对此有解决方案,则如果您分享它将会有很大帮助。

我有一个“摘要”页面,其中包含“ A1:B7”单元格中的数据。 我想隐藏从第8到最后一个1048576的行。 我正在尝试:

PATH

预期结果:应该隐藏从8到1048576的所有行。

2 个答案:

答案 0 :(得分:0)

如果尚未下载OpenXMLSDKTool,请下载它,将未隐藏行的文件与隐藏行的文件进行比较,我相信它应该向您显示xml以及用于生成它的c#的区别

答案 1 :(得分:0)

您可以创建具有8到1048576个Row值的隐藏RowIndex对象,并将它们添加到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 ...
    }
}