Erstellen, bearbeiten, pruefen, berechnen und exportieren Sie Excel-Arbeitsmappen direkt aus Delphi- oder C++Builder-Code. HotXLS ist eine native Object-Pascal-Bibliothek fuer XLS und XLSX, entwickelt fuer Desktop-Tools, Batchauftraege, Berichte und Dokumenterzeugung ohne Microsoft-Excel-Automatisierung.
Dieser Artikel richtet sich an teams delivering password-protected XLSX files from Delphi services or desktop applications. Er behandelt XLSX AES-protected output als produktive Dokumenttechnik und nicht als kurzen Komponentenaufruf.
Das praktische Risiko besteht darin, dass protected workbook output can satisfy a password prompt but still fail policy if key handling, password delivery, viewer compatibility, and unsupported encrypted-read paths are unclear. Deshalb braucht der Ablauf einen schriftlichen Vertrag, nachvollziehbare Diagnosen und reale Regressionsdateien.
Architekturentscheidungen
Separate workbook protection from file encryption. password generation, delivery, rotation, escrow, and retry policy / difference between workbook structure protection, sheet protection, and file encryption
- password generation, delivery, rotation, escrow, and retry policy
- difference between workbook structure protection, sheet protection, and file encryption
- supported target applications and whether encrypted input reading is part of scope
- temporary file and support-bundle handling for protected workbooks
Implementierungsablauf
Create protected output from a named security profile. The order below keeps the workflow reviewable for Delphi and C++Builder teams.
- generate the workbook content and validate it before applying file encryption
- select the AES protection profile and obtain the password through approved code paths
- save the protected XLSX to a controlled temporary destination
- test open behavior with target Excel versions or downstream consumers
- log security profile identifiers without logging secrets
Validierungsnachweise
Protection evidence for delivery and support. Keep these fields with the output or support record.
- security profile, output format, protection mode, target viewer test, and output hash
- password delivery channel identifier without password value
- temporary path, cleanup result, and retention rule
- viewer compatibility result and operator-facing failure reason
Password-protected XLSX still needs workflow policy
AES-protected output is a delivery decision. The application should know how passwords are generated, transmitted, rotated, and never logged; it should also verify that target viewers can open the result.
Implementierungshinweise für die Produktion
Behandle HotXLS Component: XLSX AES-protected output in Delphi als klaren Servicevertrag rund um die HotXLS-Aufrufe, mit getrennten Schritten für Eingabeprüfung, Arbeitsmappenaufbau, Ausgabekontrolle und Support-Evidenz
- Datenquelle, Zellbereiche und Ausgabeformat festlegen, bevor die Arbeitsmappe erzeugt wird
- Zeilenanzahl, Blattanzahl, Warnungen und Ausgabepfad in ein prüfbares Support-Protokoll schreiben
- Anwendungsspezifische Details in testbare Helper kapseln, statt sie in UI-Ereignissen zu verteilen
- Die gespeicherte Datei erneut öffnen oder prüfen, bevor sie an ein anderes System oder an Kunden geht
Fehlerfälle, die getestet werden sollten
- Ein erfolgreicher SaveAs-Aufruf beweist noch nicht, dass der fachliche Vertrag stimmt
- Schriftarten, Rechte und regionale Einstellungen können auf Servern anders sein als auf Entwicklerrechnern
- Logs dürfen keine Passwörter, Kundendaten oder internen Links offenlegen
Ausführliches Delphi-Beispiel
Das folgende Beispiel zeigt eine praktische Servicegrenze für dieses Thema und hält Policy, Logging und Validierung testbar getrennt
procedure SaveProtectedXlsxReport(const OutputFile, Password: string; const Rows: TArray<TSecureRow>);
var
Wb: TXLSXWorkbook;
Sh: IXLSWorksheet;
RowIndex: Integer;
Row: TSecureRow;
Policy: TEncryptionPolicy;
begin
RequireStrongWorkbookPassword(Password);
Policy := BuildEncryptionPolicy('customer-delivery', 256);
Wb := TXLSXWorkbook.Create;
try
Sh := Wb.Sheets[0];
Sh.Name := 'Secure Export';
WriteHeaderRow(Sh, ['RecordId', 'Owner', 'Amount', 'Status']);
RowIndex := 2;
for Row in Rows do
begin
Sh.Range['A' + IntToStr(RowIndex)].Value := Row.RecordId;
Sh.Range['B' + IntToStr(RowIndex)].Value := Row.Owner;
Sh.Range['C' + IntToStr(RowIndex)].Value := Row.Amount;
Sh.Range['D' + IntToStr(RowIndex)].Value := Row.Status;
Inc(RowIndex);
end;
WriteEncryptionAuditSheet(Wb, Policy, RowIndex - 2);
SaveAsEncryptedWorkbook(Wb, OutputFile, Password, Policy);
VerifyEncryptedWorkbookCanOpen(OutputFile, Password);
RegisterSecureDelivery(OutputFile, Policy);
finally
Wb.Free;
end;
end;
Produktionscheckliste
- Run the workflow on an empty workbook, a normal customer workbook, and a worst-case workbook
- Open the output with the target spreadsheet application or downstream importer
- Log product version, template version, profile, row count, output path, elapsed time, and warning count
- Keep passwords, temporary files, customer data, and support bundles under explicit retention rules
- Add regression workbooks when a customer file exposes a new edge case