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

时间:2019-01-08 17:23:32

标签: c# openxml openxml-sdk

我正在尝试使用OpenXML以编程方式将Excel工作簿设置为可见,但是对于C#来说还很陌生,并且不确定如何做到这一点。

我们正在使用存储Office文档的第三方应用程序,我的任务是报告。它做的许多奇怪的事情之一是在保存文档之前先对其进行压缩,然后在数据库记录中将Excel Workbook的可见性设置为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);
    }
}

1 个答案:

答案 0 :(得分:2)

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

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

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

   workBookView.Visibility = VisibilityValues.Hidden;

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

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