Twórz, edytuj, sprawdzaj, obliczaj i eksportuj skoroszyty Excel bezpośrednio z kodu Delphi lub C++Builder. HotXLS to natywna biblioteka Object Pascal z kodem źródłowym dla przepływów XLS i XLSX, przeznaczona do narzędzi desktopowych, zadań batch, systemów raportowych i generowania dokumentów po stronie serwera bez automatyzacji Microsoft Excel.
Ten artykuł jest przeznaczony dla teams delivering password-protected XLSX files from Delphi services or desktop applications. Traktuje XLSX AES-protected output jako produkcyjną inżynierię dokumentów, a nie pojedyncze wywołanie komponentu.
Praktyczne ryzyko polega na tym, że 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. Dlatego przepływ wymaga spisanego kontraktu, obserwowalnej diagnostyki i realistycznych plików regresyjnych.
Decyzje architektoniczne
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
Przebieg implementacji
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
Dowody walidacji
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.
Uwagi wdrożeniowe dla produkcji
Traktuj HotXLS Component: XLSX AES-protected output in Delphi jako jawny kontrakt usługi wokół wywołań HotXLS, oddzielając walidację wejścia, zapis skoroszytu, kontrolę wyniku i dowody dla wsparcia
- Ustal źródło danych, zakresy komórek i format wyjściowy przed utworzeniem skoroszytu
- Zapisuj liczbę wierszy, arkusze, ostrzeżenia i ścieżkę wyjściową w możliwym do sprawdzenia logu
- Szczegóły aplikacji zamykaj w testowalnych helperach zamiast w zdarzeniach UI
- Otwórz lub sprawdź zapisany plik przed przekazaniem go do innego systemu lub klienta
Tryby awarii do przećwiczenia
- Udany SaveAs nie dowodzi, że kontrakt biznesowy nadal jest poprawny
- Czcionki, uprawnienia i ustawienia regionalne mogą różnić się między serwerem a maszyną deweloperską
- Logi nie mogą ujawniać haseł, danych klientów ani linków wewnętrznych
Szczegółowy przykład Delphi
Poniższy przykład Delphi pokazuje praktyczną granicę usługi dla tego tematu, z polityką, logowaniem i walidacją w warstwie możliwej do testowania
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;
Lista produkcyjna
- 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