【发布时间】:2018-10-30 13:14:58
【问题描述】:
在 .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. */ });
【问题讨论】:
-
此 PR 合并发布时会修复。 github.com/ClosedXML/ClosedXML/pull/1054
标签: c# excel .net-core openxml closedxml