如何在 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()));
我正在尝试使用 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()));