2

我正在使用 OpenXML 生成报告并将其导出到 Excel。我想保护除特定单元格之外的 Excel 工作表。

如果有人以前做过这方面的工作,请帮助

谢谢,阿莫利克

4

2 回答 2

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-数据集到 excel?forum=oxmlsdk

于 2014-10-08T10:54:55.213 回答
-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 };

我没有尝试过这个,但它应该很容易找出你需要用生产力工具包做什么。我希望这能为您和任何试图在正确方向上做到这一点的人指明方向。

于 2011-04-07T08:32:11.733 回答