ClosedXML保存工作簿以提示只读打开

时间:2018-10-30 13:14:58

标签: c# excel .net-core openxml closedxml

在.Net Core 2.0上使用ClosedXML(v0.93.1),尝试保存工作簿,以便在打开工作簿时提示用户以“只读”方式打开或输入受保护的密码。 (请参见下面的链接问题)。

我见过IXLWorksheet.Protect()XLWorkbook.Protect()-它们可以正确地保护工作簿,但仍默认用户以R / W访问权限打开。这是一个问题,因为它会写锁定文件,并且在用户关闭excel之前,我的进程无法覆盖它。

This question表示OpenXML(ClosedXML的基础API)在保存工作簿时可以进行设置,但是ClosedXML XLWorkbook.SaveAs(SaveOptions)不包含此设置。也许我找不到关于此选项的closedxml文档,但我相信这是我需要的选项。

根据this answer和所附的github / MSDN链接,OpenXML不支持密码保护,但是除了第一个链接的问题说应该可以打开以外,我看不到任何有关只读打开的信息。

代码示例:

XLWorkbook wb = new XLWorkbook();
var ws = wb.AddWorksheet("My Sheet");

// ... add to worksheet

ws.Protect("my-worksheet-password");
wb.SaveAs("C:\\my-workbook.xlsx", new SaveOptions { /* In OpenXML the option would exist during this save step. */ });

1 个答案:

答案 0 :(得分:1)

ClosedXML尚不支持此功能,但是您可以直接使用OpenXml设置require属性。请参阅https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.filesharing.readonlyrecommended?view=openxml-2.8.1

    private void GeneratePartContent(WorkbookPart part)
    {
        FileSharing fileSharing1 = new FileSharing(){ ReadOnlyRecommended = true };
        workbook1.Append(fileSharing1);
        part.Workbook = workbook1;
    }