除了使用Open XML 2.0的特定单元外,如何保护Excel工作表?

时间:2010-07-08 06:23:16

标签: openxml-sdk

我正在使用OpenXML生成报告并将其导出到excel。我想保护excel表,除了特定的单元格。

如果有人之前已经做过这方面的工作,请提供帮助

谢谢, Amolik

2 个答案:

答案 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);

参考:http://social.msdn.microsoft.com/Forums/en-US/a6f7502d-3867-4d5b-83a9-b4e0e211068f/how-to-lock-specific-columns-in-xml-workbook-while-exporting-dataset-to-excel?forum=oxmlsdk

答案 1 :(得分:-1)

您是否尝试过使用OpenXML Productivity Toolkit?

从我可以看到你必须添加一个

new CellFormat

带有属性

ApplyProtection = true

CellFormats

追加

new Protection

带有属性

Locked = false

到您创建的CellFormat

CellFormatCellFormats的元素,是Stylesheet

的元素

然后到Worksheet添加

new SheetProtection(){ Password = "CC1A", Sheet = true, Objects = true, Scenarios = true };

我没有尝试过这个,但是应该很容易找到你需要用Productivity Toolkit做什么。我希望这能指出你和任何试图朝着正确方向努力的人。