Я пытаюсь использовать OpenXML, чтобы программно сделать книгу Excel видимой, но я новичок в C# и не знаю, как это сделать.
Мы используем стороннее приложение, в котором хранятся документы Office, и мне поручено составлять отчеты. Одна из многих странных вещей, которые он делает - сжимает документы перед их сохранением и устанавливает для видимости Excel Workbook значение false в записи базы данных.
Согласно документация есть функция, которая должна это делать:
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()));