Protéger et déprotéger la feuille de calcul

Protéger les feuilles de calcul

Lorsqu’une feuille de calcul est protégée, les actions qu’un utilisateur peut effectuer sont restreintes. Par exemple, ils ne peuvent pas saisir de données, insérer ou supprimer des lignes ou des colonnes, etc. Les options de protection générales dans Microsoft Excel sont :

  • Contenu
  • Objets
  • Scénarios

Les feuilles de calcul protégées ne cachent ni ne protègent les données sensibles, c’est donc différent du chiffrement de fichier. Généralement, la protection de la feuille de calcul convient à des fins de présentation. Elle empêche l’utilisateur final de modifier les données, le contenu et la mise en forme dans la feuille de calcul.

Ajout ou suppression de protection

Aspose.Cells fournit une classe, Workbook, qui représente un fichier Microsoft Excel. La classe Workbook contient une WorksheetCollection qui permet d’accéder à chaque feuille de calcul dans un fichier Excel. Une feuille de calcul est représentée par la classe Worksheet.

La classe Worksheet fournit la méthode Protect qui est utilisée pour appliquer une protection à une feuille de calcul. La méthode Protect accepte les paramètres suivants :

  • Type de protection, le type de protection à appliquer sur la feuille de calcul. Le type de protection est appliqué à l’aide de l’énumération ProtectionType.
  • Nouveau mot de passe, le nouveau mot de passe utilisé pour protéger la feuille de calcul.
  • Ancien mot de passe, l’ancien mot de passe, si la feuille de calcul est déjà protégée par mot de passe. Si la feuille de calcul n’est pas déjà protégée, il suffit de transmettre une valeur nulle.

L’énumération ProtectionType contient les types de protection prédéfinis suivants :

Types de protection Description
ALL L’utilisateur ne peut rien modifier sur cette feuille de calcul
CONTENTS L’utilisateur ne peut pas saisir de données dans cette feuille de calcul
OBJECTS L’utilisateur ne peut pas modifier les objets graphiques
SCENARIOS L’utilisateur ne peut pas modifier les scénarios enregistrés
STRUCTURE L’utilisateur ne peut pas modifier la structure enregistrée
WINDOWS L’utilisateur ne peut pas modifier les fenêtres enregistrées
NONE Aucune protection

L’exemple ci-dessous montre comment protéger une feuille de calcul avec un mot de passe.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(ProtectingWorksheet.class) + "worksheets/";
// Instantiating a Excel object by excel file path
Workbook excel = new Workbook(dataDir + "book1.xls");
// Accessing the first worksheet in the Excel file
WorksheetCollection worksheets = excel.getWorksheets();
Worksheet worksheet = worksheets.get(0);
Protection protection = worksheet.getProtection();
// The following 3 methods are only for Excel 2000 and earlier formats
protection.setAllowEditingContent(false);
protection.setAllowEditingObject(false);
protection.setAllowEditingScenario(false);
// Protects the first worksheet with a password "1234"
protection.setPassword("1234");
// Saving the modified Excel file in default format
excel.save(dataDir + "ProtectingWorksheet_out.xls");
// Print Message
System.out.println("Sheet protected successfully.");

Après que le code ci-dessus a été utilisé pour protéger la feuille de calcul, vérifiez la protection sur la feuille de calcul en l’ouvrant. Une fois que vous ouvrez le fichier et essayez d’ajouter des données à la feuille de calcul, la boîte de dialogue suivante s’affiche :

Une boîte de dialogue avertissant qu’un utilisateur ne peut pas modifier la feuille de calcul

todo:image_alt_text

Pour travailler sur la feuille de calcul, déprotégez la feuille de calcul en sélectionnant la Protection, puis Déprotéger la feuille dans le menu Outils comme indiqué ci-dessous.

Sélection de l’option Déprotéger la feuille

todo:image_alt_text

Une boîte de dialogue s’ouvre demandant un mot de passe.

Saisir le mot de passe pour désactiver la protection de la feuille de calcul

todo:image_alt_text

Protection de quelques cellules

Il peut y avoir certains scénarios où vous avez besoin de verrouiller uniquement quelques cellules dans la feuille de calcul. Si vous voulez verrouiller certaines cellules spécifiques dans la feuille de calcul, vous devez déverrouiller toutes les autres cellules de la feuille. Toutes les cellules d’une feuille de calcul sont déjà initialisées pour le verrouillage, vous pouvez vérifier ceci en ouvrant un fichier Excel dans MS Excel et en cliquant sur Format | Cellules… pour afficher la boîte de dialogue Format Cells puis cliquez sur l’onglet Protection et voir si une case à cocher intitulée “Verrouillée” est cochée par défaut.

Voici les deux approches pour implémenter la tâche.

Méthode 1 :

Les points suivants décrivent comment verrouiller quelques cellules à l’aide de MS Excel. Cette méthode s’applique aux versions Microsoft Office Excel 97, 2000, 2002, 2003 et supérieures.

  1. Sélectionnez la feuille de calcul entière en cliquant sur le bouton Tout sélectionner (le rectangle gris directement au-dessus du numéro de ligne pour la ligne 1 et à gauche de la lettre de colonne A).

  2. Cliquez sur Cellules dans le menu Format, cliquez sur l’onglet Protection, puis désélectionnez la case à cocher Verrouillée.

    Cela déverrouille toutes les cellules de la feuille de calcul

  1. Sélectionnez simplement les cellules que vous voulez verrouiller et répétez l’étape 2, mais cette fois, sélectionnez la case à cocher Verrouillée.
  2. Dans le menu Outils, sélectionnez Protection, cliquez sur Protéger la feuille, puis cliquez sur OK.

Méthode2 :

Dans cette méthode, nous utilisons uniquement l’API Aspose.Cells pour effectuer la tâche.

L’exemple suivant montre comment protéger quelques cellules dans la feuille de calcul. Il déverrouille d’abord toutes les cellules de la feuille de calcul, puis verrouille 3 cellules (A1, B1, C1) dans celle-ci. Enfin, il protège la feuille de calcul. Une ligne / colonne a une API de style qui contient également une méthode setLocked. Vous pouvez utiliser cette méthode pour verrouiller ou déverrouiller la ligne / colonne.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(ProtectingSpecificCellsinaWorksheet.class) + "worksheets/";
// Create a new workbook.
Workbook wb = new Workbook();
// Create a worksheet object and obtain the first sheet.
Worksheet sheet = wb.getWorksheets().get(0);
// Define the style object.
Style style;
// Define the styleflag object.
StyleFlag flag;
flag = new StyleFlag();
flag.setLocked(true);
// Loop through all the columns in the worksheet and unlock them.
for (int i = 0; i <= 255; i++) {
style = sheet.getCells().getColumns().get(i).getStyle();
style.setLocked(false);
sheet.getCells().getColumns().get(i).applyStyle(style, flag);
}
// Lock the three cells...i.e. A1, B1, C1.
style = sheet.getCells().get("A1").getStyle();
style.setLocked(true);
sheet.getCells().get("A1").setStyle(style);
style = sheet.getCells().get("B1").getStyle();
style.setLocked(true);
sheet.getCells().get("B1").setStyle(style);
style = sheet.getCells().get("C1").getStyle();
style.setLocked(true);
sheet.getCells().get("C1").setStyle(style);
// Save the excel file.
wb.save(dataDir + "PSpecificCellsinaWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Cells protected successfully.");

Protéger une ligne dans la feuille de calcul

Aspose.Cells vous permet de verrouiller facilement une ligne dans la feuille de calcul. Ici, nous pouvons utiliser la méthode applyStyle() de la classe Row pour appliquer un style à une ligne particulière dans la feuille de calcul. Cette méthode prend deux arguments : un objet Style et une structure StyleFlag qui contient tous les membres liés à la mise en forme appliquée.

L’exemple suivant montre comment protéger une rangée dans la feuille de calcul. Il déverrouille d’abord toutes les cellules de la feuille de calcul, puis verrouille la première rangée dans celle-ci. Enfin, il protège la feuille de calcul. Une ligne / colonne a une API de style qui contient également une méthode setCellLocked. Vous pouvez verrouiller ou déverrouiller la ligne / colonne en utilisant la structure StyleFlag.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(ProtectRowWorksheet.class) + "worksheets/";
// Create a new workbook.
Workbook wb = new Workbook();
// Create a worksheet object and obtain the first sheet.
Worksheet sheet = wb.getWorksheets().get(0);
// Define the style object.
Style style;
// Define the styleflag object.
StyleFlag flag;
// Loop through all the columns in the worksheet and unlock them.
for (int i = 0; i <= 255; i++) {
style = sheet.getCells().getRows().get(i).getStyle();
style.setLocked(false);
flag = new StyleFlag();
flag.setLocked(true);
sheet.getCells().getRows().get(i).applyStyle(style, flag);
}
// Get the first Roww style.
style = sheet.getCells().getRows().get(1).getStyle();
// Lock it.
style.setLocked(true);
// Instantiate the flag.
flag = new StyleFlag();
// Set the lock setting.
flag.setLocked(true);
// Apply the style to the first row.
sheet.getCells().getRows().get(1).applyStyle(style, flag);
sheet.protect(ProtectionType.ALL);
// Save the excel file.
wb.save(dataDir + "ProtectRowWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Row protected successfully.");

Protéger une colonne dans la feuille de calcul

Aspose.Cells vous permet de verrouiller facilement une colonne dans la feuille de calcul. Ici, nous pouvons utiliser la méthode applyStyle() de la classe Column pour appliquer un style à une colonne particulière dans la feuille de calcul. Cette méthode prend deux arguments : un objet Style et une structure StyleFlag qui contient tous les membres liés à la mise en forme appliquée.

L’exemple suivant montre comment protéger une colonne dans la feuille de calcul. Il déverrouille d’abord toutes les cellules de la feuille de calcul, puis verrouille la première colonne dans celle-ci. Enfin, il protège la feuuille de calcul. Une ligne / colonne a une API de style qui contient également une méthode setLocked. Vous pouvez verrouiller ou déverrouiller la ligne / colonne en utilisant la structure StyleFlag.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(ProtectColumnWorksheet.class) + "worksheets/";
// Create a new workbook.
Workbook wb = new Workbook();
// Create a worksheet object and obtain the first sheet.
Worksheet sheet = wb.getWorksheets().get(0);
// Define the style object.
Style style;
// Define the styleflag object.
StyleFlag flag;
// Loop through all the columns in the worksheet and unlock them.
for (int i = 0; i <= 255; i++) {
style = sheet.getCells().getColumns().get(i).getStyle();
style.setLocked(false);
flag = new StyleFlag();
flag.setLocked(true);
sheet.getCells().getColumns().get(i).applyStyle(style, flag);
}
// Get the first column style.
style = sheet.getCells().getColumns().get(0).getStyle();
// Lock it.
style.setLocked(true);
// Instantiate the flag.
flag = new StyleFlag();
// Set the lock setting.
flag.setLocked(true);
// Apply the style to the first column.
sheet.getCells().getColumns().get(0).applyStyle(style, flag);
sheet.protect(ProtectionType.ALL);
// Save the excel file.
wb.save(dataDir + "PColumnWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Column protected successfully.");

Déprotéger une feuille de calcul

Protection des feuilles de calcul et Paramètres de protection avancés depuis Excel XP abordent différentes approches pour protéger les feuilles de calcul. Que faire si un développeur doit supprimer la protection d’une feuille de calcul protégée à l’exécution pour apporter des modifications au fichier ? Cela peut facilement être fait avec Aspose.Cells.

Utilisation de Microsoft Excel

Pour supprimer la protection d’une feuille de calcul:

Dans le menu Outils, sélectionnez Protection puis Désactiver la protection de la feuille.

Sélectionner Désactiver la protection de la feuille

todo:image_alt_text

La protection est supprimée, sauf si la feuille de calcul est protégée par mot de passe. Dans ce cas, une boîte de dialogue demande le mot de passe.

Saisir le mot de passe pour désactiver la protection de la feuille de calcul

todo:image_alt_text

Utilisation d’Aspose.Cells

Une feuille de calcul peut être désactivée en appelant la méthode Unprotect de la classe Worksheet. La méthode Unprotect peut être utilisée de deux manières, décrites ci-dessous.

Désactiver une feuille de calcul simplement protégée

Une feuille de calcul simplement protégée est une feuille non protégée par un mot de passe. De telles feuilles de calcul peuvent être désactivées en appelant la méthode de désactivation sans passer de paramètre.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(UnprotectingSimplyProtectedWorksheet.class) + "worksheets/";
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "book1.xls");
WorksheetCollection worksheets = workbook.getWorksheets();
Worksheet worksheet = worksheets.get(0);
Protection protection = worksheet.getProtection();
// The following 3 methods are only for Excel 2000 and earlier formats
protection.setAllowEditingContent(false);
protection.setAllowEditingObject(false);
protection.setAllowEditingScenario(false);
// Unprotecting the worksheet
worksheet.unprotect();
// Save the excel file.
workbook.save(dataDir + "USPWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Worksheet unprotected successfully.");

Désactiver une feuille de calcul protégée par mot de passe

Une feuille de calcul protégée par mot de passe est une feuille protégée par un mot de passe. De telles feuilles de calcul peuvent être désactivées en appelant une version surchargée de la méthode de désactivation qui prend le mot de passe en tant que paramètre.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(UnprotectProtectSheet.class) + "worksheets/";
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "book1.xls");
WorksheetCollection worksheets = workbook.getWorksheets();
Worksheet worksheet = worksheets.get(0);
// Unprotecting the worksheet
worksheet.unprotect("aspose");
// Save the excel file.
workbook.save(dataDir + "UnprotectProtectSheet_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Worksheet unprotected successfully.");

Paramètres de protection avancés depuis Excel XP

Protection des feuilles de calcul abordant la protection d’une feuille de calcul dans Microsoft Excel 97 et 2000. Mais depuis la version Excel 2002 ou XP, Microsoft a ajouté de nombreux paramètres de protection avancés. Ces paramètres de protection restreignent ou autorisent les utilisateurs à :

  • Supprimer des lignes ou des colonnes.
  • Modifier le contenu, les objets ou les scénarios.
  • Formater les cellules, les lignes ou les colonnes.
  • Insérer des lignes, des colonnes ou des hyperliens.
  • Sélectionner des cellules verrouillées ou déverrouillées.
  • Utiliser des tableaux croisés dynamiques et bien plus encore.

Aspose.Cells prend en charge tous les paramètres de protection avancés offerts par Excel XP et les versions ultérieures.

Paramètres de protection avancés utilisant Excel XP et les versions ultérieures

Pour afficher les paramètres de protection disponibles dans Excel XP :

  1. Dans le menu Outils, sélectionnez Protection suivi de Protéger la feuille. Une boîte de dialogue s’affiche.

    Boîte de dialogue pour afficher les options de protection dans Excel XP

todo:image_alt_text

  1. Autoriser ou restreindre les fonctionnalités des feuilles de calcul ou appliquer un mot de passe.

Paramètres de protection avancés utilisant Aspose.Cells

Aspose.Cells supporte tous les paramètres de protection avancés.

Aspose.Cells fournit une classe, Workbook, qui représente un fichier Microsoft Excel. La classe Workbook contient une collection WorksheetCollection qui permet d’accéder à chaque feuille de calcul dans le fichier Excel. Une feuille de calcul est représentée par la classe Worksheet.

La classe Worksheet fournit la propriété Protection qui est utilisée pour appliquer ces paramètres de protection avancés. La propriété Protection est en fait un objet de la classe Protection qui encapsule plusieurs propriétés booléennes pour désactiver ou activer des restrictions.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(AdvancedProtectionSettingsUsingAsposeCells.class) + "worksheets/";
// Instantiating a Workbook object by excel file path
Workbook excel = new Workbook(dataDir + "book1.xlsx");
WorksheetCollection worksheets = excel.getWorksheets();
Worksheet worksheet = worksheets.get(0);
Protection protection = worksheet.getProtection();
// Restricting users to delete columns of the worksheet
protection.setAllowDeletingColumn(false);
// Restricting users to delete row of the worksheet
protection.setAllowDeletingRow(false);
// Restricting users to edit contents of the worksheet
protection.setAllowEditingContent(false);
// Restricting users to edit objects of the worksheet
protection.setAllowEditingObject(false);
// Restricting users to edit scenarios of the worksheet
protection.setAllowEditingScenario(false);
// Restricting users to filter
protection.setAllowFiltering(false);
// Allowing users to format cells of the worksheet
protection.setAllowFormattingCell(true);
// Allowing users to format rows of the worksheet
protection.setAllowFormattingRow(true);
// Allowing users to insert columns in the worksheet
protection.setAllowInsertingColumn(true);
// Allowing users to insert hyperlinks in the worksheet
protection.setAllowInsertingHyperlink(true);
// Allowing users to insert rows in the worksheet
protection.setAllowInsertingRow(true);
// Allowing users to select locked cells of the worksheet
protection.setAllowSelectingLockedCell(true);
// Allowing users to select unlocked cells of the worksheet
protection.setAllowSelectingUnlockedCell(true);
// Allowing users to sort
protection.setAllowSorting(true);
// Allowing users to use pivot tables in the worksheet
protection.setAllowUsingPivotTable(true);
// Saving the modified Excel file Excel XP format
excel.save(dataDir + "APSettingsUsingAsposeCells_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Worksheet protected successfully.");

Voici un petit exemple d’application. Il ouvre un fichier Excel et utilise la plupart des paramètres de protection avancés pris en charge par Excel XP et les versions ultérieures.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(AdvancedProtection.class) + "worksheets/";
// Instantiating a Workbook object by excel file path
Workbook excel = new Workbook(dataDir + "book1.xls");
WorksheetCollection worksheets = excel.getWorksheets();
Worksheet worksheet = worksheets.get(0);
Protection protection = worksheet.getProtection();
// Restricting users to delete columns of the worksheet
protection.setAllowDeletingColumn(false);
// Restricting users to delete row of the worksheet
protection.setAllowDeletingRow(false);
// Restricting users to edit contents of the worksheet
protection.setAllowEditingContent(false);
// Restricting users to edit objects of the worksheet
protection.setAllowEditingObject(false);
// Restricting users to edit scenarios of the worksheet
protection.setAllowEditingScenario(false);
// Restricting users to filter
protection.setAllowFiltering(false);
// Allowing users to format cells of the worksheet
protection.setAllowFormattingCell(true);
// Allowing users to format rows of the worksheet
protection.setAllowFormattingRow(true);
// Allowing users to insert columns in the worksheet
protection.setAllowInsertingColumn(true);
// Allowing users to insert hyperlinks in the worksheet
protection.setAllowInsertingHyperlink(true);
// Allowing users to insert rows in the worksheet
protection.setAllowInsertingRow(true);
// Allowing users to select locked cells of the worksheet
protection.setAllowSelectingLockedCell(true);
// Allowing users to select unlocked cells of the worksheet
protection.setAllowSelectingUnlockedCell(true);
// Allowing users to sort
protection.setAllowSorting(true);
// Allowing users to use pivot tables in the worksheet
protection.setAllowUsingPivotTable(true);
// Saving the modified Excel file Excel XP format
excel.save(dataDir + "AdvancedProtection_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Worksheet protected successfully.");

Problème de verrouillage de cellules

Si vous souhaitez empêcher les utilisateurs de modifier des cellules, les cellules doivent être verrouillées avant d’appliquer des paramètres de protection. Sinon, les cellules peuvent être modifiées même si la feuille de calcul est protégée. Dans Microsoft Excel XP, les cellules peuvent être verrouillées à l’aide de la boîte de dialogue suivante :

Boîte de dialogue pour verrouiller les cellules dans Excel XP

todo:image_alt_text

Il est possible de verrouiller des cellules en utilisant l’API Aspose.Cells également. Chaque cellule possède une API Style qui contient de plus une méthode setLocked. Utilisez-la pour verrouiller ou déverrouiller des cellules.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(LockCell.class) + "worksheets/";
// Instantiating a Workbook object by excel file path
Workbook excel = new Workbook(dataDir + "Book1.xlsx");
WorksheetCollection worksheets = excel.getWorksheets();
Worksheet worksheet = worksheets.get(0);
worksheet.getCells().get("A1").getStyle().setLocked(true);
// Saving the modified Excel file Excel XP format
excel.save(dataDir + "LockCell_out.xls", FileFormatType.EXCEL_97_TO_2003);
// Print Message
System.out.println("Cell Locked successfully.");