如何使用OpenXML C#在Excel中隐藏工作表?
发布时间:2020-12-15 08:42:31 所属栏目:百科 来源:网络整理
导读:我有一个带有各种工作表的Excel模板,我将使用Open XML,C#转储从SQL Server检索的数据. 在完成转储数据后,我需要根据条件隐藏一些工作表.我找不到使用C#OpenXML隐藏特定表单的任何代码. 我尝试了以下但是床单没有被隐藏. byte[] byteArray = File.ReadAllByte
我有一个带有各种工作表的Excel模板,我将使用Open
XML,C#转储从SQL Server检索的数据.
在完成转储数据后,我需要根据条件隐藏一些工作表.我找不到使用C#OpenXML隐藏特定表单的任何代码. 我尝试了以下但是床单没有被隐藏. byte[] byteArray = File.ReadAllBytes("D:rptTemplate.xlsx"); using (MemoryStream mem = new MemoryStream()) { mem.Write(byteArray,(int)byteArray.Length); using (SpreadsheetDocument rptTemplate = SpreadsheetDocument.Open(mem,true)) { foreach (OpenXmlElement oxe in (rptTemplate.WorkbookPart.Workbook.Sheets).ChildElements) { if(((DocumentFormat.OpenXml.Spreadsheet.Sheet)(oxe)).Name == "ABC") ((DocumentFormat.OpenXml.Spreadsheet.Sheet)(oxe)).State = SheetStateValues.Hidden; } rptTemplate.WorkbookPart.Workbook.Save(); } } 请求帮助. 谢谢. 解决方法
您必须设置WorkbookView类的ActiveTab属性
到索引不同于您的工作表的索引 我想躲起来. 因此,例如,如果您想要隐藏第一个工作表(索引为0的工作表) 这是一个小代码示例(基于您提供的代码): static void Main(string[] args) { byte[] byteArray = File.ReadAllBytes("D:rptTemplate.xlsx"); using (MemoryStream mem = new MemoryStream()) { mem.Write(byteArray,(int)byteArray.Length); using (SpreadsheetDocument rptTemplate = SpreadsheetDocument.Open(mem,true)) { foreach (OpenXmlElement oxe in (rptTemplate.WorkbookPart.Workbook.Sheets).ChildElements) { if(((DocumentFormat.OpenXml.Spreadsheet.Sheet)(oxe)).Name == "ABC") { ((DocumentFormat.OpenXml.Spreadsheet.Sheet)(oxe)).State = SheetStateValues.Hidden; WorkbookView wv = rptTemplate.WorkbookPart.Workbook.BookViews.ChildElements.First<WorkbookView>(); if (wv != null) { wv.ActiveTab = GetIndexOfFirstVisibleSheet(rptTemplate.WorkbookPart.Workbook.Sheets); } } } rptTemplate.WorkbookPart.Workbook.Save(); } } } private static uint GetIndexOfFirstVisibleSheet(Sheets sheets) { uint index = 0; foreach (Sheet currentSheet in sheets.Descendants<Sheet>()) { if (currentSheet.State == null || currentSheet.State.Value == SheetStateValues.Visible) { return index; } index++; } throw new Exception("No visible sheet found."); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |