如何使Excel列只读,但在EPPlus C#中可重新resize?
在我的MVC项目中,用户可以在用户界面中select一些产品,并以Excel(.xlsx)格式下载相关产品信息。
我们的业务需求是,除less数列/单元格外,文件应该是只读的。 我正在使用EPPlus 4.0.4
来生成Excel,到目前为止效果很好。
我在这里面临的问题是,当我保护工作表的那一刻,用户不能再调整列的大小(拖动标题来改变列的宽度)。 所以,在一些列中的文本是不可见的。 为了解决这个问题,我使用AutoFit(##代码如下)。 所以,文本现在是可见的。 但是,用户仍然不能改变他们应该能够的列宽。
所以我的问题是,我可以使单元格/列只读,但使他们像正常的Excel重新大小?
我的代码如下
//using OfficeOpenXml; //using OfficeOpenXml.Style; private void ProtectExcel(ExcelWorksheet ws, int columnCount) { ws.Protection.AllowSort = true; ws.Protection.AllowSelectUnlockedCells = true; ws.Protection.AllowAutoFilter = true; for (int i = 1; i <= columnCount; i++) { ws.Column(i).Style.Locked = true; //making read-only ws.Column(i).AutoFit(); //## showing all text } ws.Protection.IsProtected = true; //making the sheet protected }
ws.Protection
属性有许多属性来指定将被保护的内容。 一个是AllowFormatColumns
,所以:
ws.Protection.AllowFormatColumns = true;