我正在使用 OpenXML 生成报告并将其导出到 Excel。我想保护除特定单元格之外的 Excel 工作表。
如果有人以前做过这方面的工作,请帮助
谢谢,阿莫利克
PageMargins pageM = worksheetPart.Worksheet.GetFirstChild<PageMargins>();
SheetProtection sheetProtection = new SheetProtection();
sheetProtection.Password = "CC";
sheetProtection.Sheet = true;
sheetProtection.Objects = true;
sheetProtection.Scenarios = true;
ProtectedRanges pRanges = new ProtectedRanges();
ProtectedRange pRange = new ProtectedRange();
ListValue<StringValue> lValue = new ListValue<StringValue>();
lValue.InnerText = "A1:E1"; //set cell which you want to make it editable
pRange.SequenceOfReferences = lValue;
pRange.Name = "not allow editing";
pRanges.Append(pRange);
worksheetPart.Worksheet.InsertBefore(sheetProtection, pageM);
worksheetPart.Worksheet.InsertBefore(pRanges, pageM);
您是否尝试过使用 OpenXML Productivity Toolkit?
从我所看到的你必须添加一个
new CellFormat
带属性
ApplyProtection = true
至
CellFormats
附加
new Protection
带属性
Locked = false
到CellFormat
您创建的。
CellFormat
是CellFormats
其中的一个元素Stylesheet
然后给Worksheet
你添加一个
new SheetProtection(){ Password = "CC1A", Sheet = true, Objects = true, Scenarios = true };
我没有尝试过这个,但它应该很容易找出你需要用生产力工具包做什么。我希望这能为您和任何试图在正确方向上做到这一点的人指明方向。