[JAVA] [Note] Appliquer la protection par mot de passe aux feuilles Excel avec NPOI

Ce que je voulais faire

J'ai dû prendre des mesures pour savoir facilement si Excel avait été falsifié dans un certain cas. "Alors tu devrais mettre un mot de passe sur le livre!" J'ai pensé et j'ai commencé à enquêter.

Conclusion

J'ai commencé à chercher, mais je ne savais pas comment mettre un mot de passe sur le livre. ** ** Cependant, je sais comment protéger la feuille, je la garderai donc pour rappel.

Pour Apache POI 4.1.2

Lorsque j'ai essayé de gérer les POI à partir de Java, j'ai pu verrouiller la feuille de calcul et le classeur.

filename.java


XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sample");

WriteCell(sheet, 0, 0, "Hello"); //Article de référence: [C#] Créer et modifier des fichiers Excel à l’aide de NPOI

//Protection de la feuille de calcul
sheet.protectSheet("password");

//Protection du classeur
workbook.lockStructure();
workbook.setWorkbookPassword("password", HashAlgorithm.sha256);

//Exporter le classeur
var out = new FileOutputStream("C:\\hogehoge.xlsx");
workbook.write(out);
workbook.close();
out.close();

Lorsque j'ai ouvert le fichier Excel généré "hogehoge.xlsx", il était certainement verrouillé. image.png

Pour NPOI 2.5.1.

La feuille de calcul a pu se verrouiller, mais n'a pas trouvé de moyen de verrouiller le classeur.

Exemple de code pour protéger la feuille de calcul

C'est presque le même que le cas de POI.

filename.cs


var workbook = new XSSFWorkBook();
ISheet worksheet = workBook.CreateSheet("testSheet1");

worksheet.ProtectSheet("password");  //Définir le mot de passe de la feuille
workbook.LockStructure();            //Protégez la structure de votre classeur(Cependant, aucun mot de passe n'est requis)

string srcFileName = @"C:\hogehoge.xlsx";
FileStream stream = (File.Exists(srcFileName))
      ? File.OpenWrite(srcFileName)
      : File.Create(srcFileName)
);
workbook.Write(stream);

Tâche

Tant qu'il existe un logiciel qui supprime la protection de Workbook en premier lieu, il convient de noter que même si la protection par mot de passe est possible, il ne peut pas empêcher complètement la falsification. Il doit être considéré comme une simple protection.

Articles et matériaux référencés

Modifier l'historique

(2020.06.20) J'ai écrit sur le cryptage avec FileInfo, mais je l'ai supprimé car il est nécessaire de scruter les informations.

Recommended Posts

[Note] Appliquer la protection par mot de passe aux feuilles Excel avec NPOI
[Java] Points à noter avec Arrays.asList ()
[Note] Comment démarrer avec Rspec