在我的 MVC 项目中,用户可以在 UI 中选择一些产品,并以 Excel(.xlsx)格式下载相关产品信息。
我们的业务要求是,除了少数列/单元格之外,文件应该是只读的。我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
}