我正在尝试使用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);
}
}
答案 0 :(得分:2)
首先您需要获取工作簿的WorkbookView,所以
var workBookView = workbookpart.Workbook.Descendants<WorkbookView>().FirstOrDefault();
然后您可以设置所需的可见性:
workBookView.Visibility = VisibilityValues.Hidden;
如果您要创建电子表格文档,则应先创建workBookView,然后才能使用它,如下所示:
spreadsheetDocument.WorkbookPart.Workbook.Append(new BookViews(new WorkbookView()));