在.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. */ });
答案 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;
}