Ich musste Maßnahmen ergreifen, um leicht herauszufinden, ob Excel in einem bestimmten Fall manipuliert wurde. "Dann solltest du ein Passwort auf das Buch setzen!" Dachte ich und begann nachzuforschen.
Ich fing an aufzuschauen, wusste aber nicht, wie ich ein Passwort in das Buch eintragen sollte. ** ** ** Ich weiß jedoch, wie ich das Blatt schützen kann, daher werde ich es als Erinnerung behalten.
Als ich versuchte, POI von Java aus zu verarbeiten, konnte ich sowohl Arbeitsblatt als auch Arbeitsmappe sperren.
filename.java
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sample");
WriteCell(sheet, 0, 0, "Hello"); //Referenzartikel: [C.#] Erstellen und bearbeiten Sie Excel-Dateien mit NPOI
//Arbeitsblattschutz
sheet.protectSheet("password");
//Arbeitsmappenschutz
workbook.lockStructure();
workbook.setWorkbookPassword("password", HashAlgorithm.sha256);
//Arbeitsmappe exportieren
var out = new FileOutputStream("C:\\hogehoge.xlsx");
workbook.write(out);
workbook.close();
out.close();
Als ich die generierte Excel-Datei "hogehoge.xlsx" öffnete, war sie mit Sicherheit gesperrt.
Das Arbeitsblatt konnte sperren, fand jedoch keine Möglichkeit, die Arbeitsmappe zu sperren.
Es ist fast das gleiche wie beim POI.
filename.cs
var workbook = new XSSFWorkBook();
ISheet worksheet = workBook.CreateSheet("testSheet1");
worksheet.ProtectSheet("password"); //Legen Sie das Blattkennwort fest
workbook.LockStructure(); //Schützen Sie die Struktur Ihrer Arbeitsmappe(Es ist jedoch kein Passwort erforderlich)
string srcFileName = @"C:\hogehoge.xlsx";
FileStream stream = (File.Exists(srcFileName))
? File.OpenWrite(srcFileName)
: File.Create(srcFileName)
);
workbook.Write(stream);
Es sollte beachtet werden, dass solange es Software gibt, die den Schutz der Arbeitsmappe in erster Linie aufhebt, selbst wenn ein Kennwortschutz durchgeführt werden kann, Manipulationen nicht vollständig verhindert werden können. Es sollte als einfacher Schutz betrachtet werden.
(2020.06.20) Ich habe über die Verschlüsselung mit FileInfo geschrieben, sie jedoch gelöscht, da die Informationen überprüft werden müssen.