如何在 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;