我正在使用OpenXML生成报告并将其导出到excel。我想保护excel表,除了特定的单元格。
如果有人之前已经做过这方面的工作,请提供帮助
谢谢, Amolik
答案 0 :(得分:1)
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);
答案 1 :(得分:-1)
您是否尝试过使用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 };
我没有尝试过这个,但是应该很容易找到你需要用Productivity Toolkit做什么。我希望这能指出你和任何试图朝着正确方向努力的人。