2010-07-19 11 views
2

Existe-t-il un moyen de verrouiller certaines cellules contre une modification par l'utilisateur? Je l'ai essayé ce qui suit:Verrouillage de cellules dans un document Excel généré par JXL

WritableCellFormat cf = new WritableCellFormat(); 
cf.setLocked(true); 
sheet.addCell(new Number(col, row, value, cf)); 

Toutefois, cela ne semble pas avoir d'effet sur la feuille de calcul résultant dire le contenu des cellules peuvent encore être modifiés lorsque le fichier est ouvert dans Excel.

Répondre

4

vous devez "activer" la protection pour chaque feuille. Je ne suis pas sûr comment exactement cela devrait être fait. La méthode que je trouve est

sheet.setProtected(true); 

mais évidemment cette méthode n'est plus recommandée. Donc, vous devriez probablement essayer de trouver un nouveau.

éditer: désolé, mon erreur. Cela verrouille toutes les cellules de la feuille.

éditer 2: Cela fonctionne pour moi si vous verrouillez la feuille entière, puis débloquez les cellules éditables.

sheet.getSettings().setProtected(true); 
WritableCellFormat unlocked = new WritableCellFormat(); 
unlocked.setLocked(false); 
Label l = new Label(0, 0, "", unlocked); 
sheet.addCell(l); 
+1

Merci, cela fonctionne! (Bien que ce soit un peu gênant de définir explicitement les cellules déverrouillées car j'ai typiquement juste une ou deux cellules que je veux verrouiller) – Janne

2

Voici les étapes générales pour protéger une cellule sans utiliser les méthodes dépréciées dans le accepted answer
1. Créez un objet WritableCellFormat et verrouillé ensemble false
2. Lorsque vous ajoutez une cellule que vous voulez être débloqué inclure le WritableCellFormat dans l'appel de la méthode addCell (...)
3. Appelez getSettings sur la feuille pour obtenir l'objet SheetSettings et appelez setProtected (true) pour protéger la feuille et par extension les cellules protégées qui en excel par défaut est toutes les cellules.

WritableCellFormat cellFormat = new WritableCellFormat(); 
cellFormat.setLocked(false) 

WritableSheet sheet = Worksheet.createSheet(); 

//Create a cell that is protected and a cell that is not protected 
sheet.addCell(new Label(col1, row, "My Locked Cell"); 
sheet.addCell(new Label(col2, row, "My Unlocked Cell", cellFormat); 

//Protect the sheet so that locked cells are locked and unlocked cells are unlocked 
sheet.getSettings().setProtected(true);