2010-07-08 7 views

Répondre

-1

Avez-vous essayé d'utiliser la productivité OpenXML Toolkit?

de ce que je peux vous voir il faut ajouter un

new CellFormat 

avec l'attribut

ApplyProtection = true 

à

CellFormats 

append

new Protection 

avec l'attribut

Locked = false 

à la CellFormat vous avez créé.

CellFormat est un élément de CellFormats qui est un élément de Stylesheet

puis au Worksheet vous ajoutez un

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

Je n'ai pas essayé, mais il devrait être facile enought pour savoir ce que vous besoin de faire avec la boîte à outils de la productivité. J'espère que cela vous indique, ainsi qu'à tous ceux qui essaient de le faire dans la bonne direction.

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

ref: 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

+0

Bonne douleur, contrairement à de nombreux conseils OpenXML qui fonctionne réellement, merci! Bien que juste pour rendre le code plus clair, je pense que vous devriez changer pRange.Name pour "Autoriser l'édition" parce que c'est ce qu'il fait. – Jon

Questions connexes