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

ClosedXML save workbook to prompt for readonly open

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

我已经看到 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. */ });

ClosedXML 尚不支持此功能,但您可以直接使用 OpenXml 来设置要求 属性。参考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;
    }