如何在 C# 中设置 Excel 工作簿可见性

How to set Excel Workbook Visibility in C#

我正在尝试使用 OpenXML 以编程方式将 Excel 工作簿设置为可见,但我对 C# 还很陌生,不知道如何操作。

我们正在使用存储 Office 文档的第 3 方应用程序,我的任务是报告。它所做的许多奇怪的事情之一是在保存文档之前压缩文档,并将数据库记录中的 Excel 工作簿可见性设置为 false。

根据 documentation 有一个函数可以做到这一点:

public DocumentFormat.OpenXml.EnumValue<DocumentFormat.OpenXml.Spreadsheet.VisibilityValues> Visibility { get; set; }

如何将其转换为有效的 C# 示例?到目前为止我没有太多:

using (MemoryStream mem = new MemoryStream())
{
    mem.Write(byteArray, 0, (int)byteArray.Length);

    using (SpreadsheetDocument rptTemplate = SpreadsheetDocument.Open(mem, true))
    {   // the next line doesn't work
        rptTemplate.WorkbookPart.Workbook.WorkbookProperties.SetAttribute(VisibilityValues = visible)
        rptTemplate.WorkbookPart.Workbook.Save();
        rptTemplate.SaveAs(filePathName);
    }
}

首先你需要获取工作簿的 WorkbookView,所以

  var workBookView = workbookpart.Workbook.Descendants<WorkbookView>().FirstOrDefault();

然后您可以设置所需的可见性:

   workBookView.Visibility = VisibilityValues.Hidden;

如果您正在创建电子表格文档,您应该先创建 workBookView,然后才能使用它,如下所示:

   spreadsheetDocument.WorkbookPart.Workbook.Append(new BookViews(new WorkbookView()));