如何在 EPPlus C# 中制作 Excel 列 read-only 但 re-sizable ?
How to make Excel columns read-only but re-sizable in EPPlus C# ?
在我的MVC项目中,用户可以selectUI中的一些产品,并下载Excel(.xlsx)格式的相关产品信息。
我们的业务需求是,除了几个 columns/cells 文件应该是 read-only。我正在使用 EPPlus 4.0.4
生成 Excel,到目前为止效果很好。
我在这里面临的问题是,当我保护工作表时,用户无法再 re-size 列(拖动 header 以更改列宽)。因此,某些列中的文本不完全可见。为了解决这个问题,我让它们自动调整(下面代码中的##)。因此,文本现在可见。但是,用户仍然无法更改他们应该能够更改的列宽。
所以我的问题是,我可以制作 cells/columns read-only 但像普通 Excel 一样制作 re-sizable 吗?
下面是我的代码
//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;
在我的MVC项目中,用户可以selectUI中的一些产品,并下载Excel(.xlsx)格式的相关产品信息。
我们的业务需求是,除了几个 columns/cells 文件应该是 read-only。我正在使用 EPPlus 4.0.4
生成 Excel,到目前为止效果很好。
我在这里面临的问题是,当我保护工作表时,用户无法再 re-size 列(拖动 header 以更改列宽)。因此,某些列中的文本不完全可见。为了解决这个问题,我让它们自动调整(下面代码中的##)。因此,文本现在可见。但是,用户仍然无法更改他们应该能够更改的列宽。
所以我的问题是,我可以制作 cells/columns read-only 但像普通 Excel 一样制作 re-sizable 吗?
下面是我的代码
//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;