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 developers generating workbooks that users continue editing after export. Er behandelt data validation, AutoFilter, and worksheet tables als produktive Dokumenttechnik und nicht als kurzen Komponentenaufruf.
Das praktische Risiko besteht darin, dass editable workbooks become error-prone when valid values, filters, table ranges, and totals are not generated as part of the data contract. Deshalb braucht der Ablauf einen schriftlichen Vertrag, nachvollziehbare Diagnosen und reale Regressionsdateien.
Architekturentscheidungen
Make user editing rules visible in the workbook. validation rules, allowed blank values, error messages, and list-source ownership / table range, header names, totals row, calculated columns, and naming policy
- validation rules, allowed blank values, error messages, and list-source ownership
- table range, header names, totals row, calculated columns, and naming policy
- AutoFilter criteria, hidden-row behavior, and whether filters are pre-applied
- how validation ranges expand when rows are appended by users or automation
Implementierungsablauf
Build tables around validated ranges. The order below keeps the workflow reviewable for Delphi and C++Builder teams.
- write the data range and define headers before applying table behavior
- attach validation rules to user-editable cells rather than entire unused columns
- apply AutoFilter and totals after the final row count is known
- test adding rows, clearing values, sorting, and filtering in Excel
- record validation and table definitions for support comparison
Validierungsnachweise
Workbook evidence for editable deliverables. Keep these fields with the output or support record.
- table name, range, header list, totals-row formula, and AutoFilter state
- validation type, source range, prompt, error message, and blank-value policy
- row count before and after user-inserted test rows
- compatibility notes for downstream spreadsheet applications
Editing support starts before the user opens Excel
Data validation, AutoFilter, and worksheet tables help users edit data safely. They need stable ranges, clear list sources, consistent table names, and formulas that expand predictably.
Implementierungshinweise für die Produktion
Behandle HotXLS: data validation, AutoFilter, and worksheet tables 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 BuildValidatedOrderWorkbook(const OutputFile: string; const Rows: TArray<TOrderRow>);
var
Wb: TXLSXWorkbook;
Sh: IXLSWorksheet;
RowIndex: Integer;
Row: TOrderRow;
begin
Wb := TXLSXWorkbook.Create;
try
Sh := Wb.Sheets[0];
Sh.Name := 'Orders';
WriteHeaderRow(Sh, ['OrderId', 'Customer', 'Status', 'Amount', 'Owner']);
RowIndex := 2;
for Row in Rows do
begin
WriteOrderRow(Sh, RowIndex, Row);
Inc(RowIndex);
end;
Sh.Range['A1:E1'].ApplyBuiltinStyle(xbsTitle);
AddListValidation(Sh, 'C2:C' + IntToStr(RowIndex - 1), ['New', 'Approved', 'Blocked']);
AddOwnerValidation(Sh, 'E2:E' + IntToStr(RowIndex - 1));
AddAutoFilterToHeader(Sh, 'A1:E' + IntToStr(RowIndex - 1));
CreateStructuredTable(Sh, 'OrdersTable', 'A1:E' + IntToStr(RowIndex - 1));
AssertValidationCoverage(Sh, RowIndex - 1);
if Wb.SaveAs(OutputFile) <> 1 then
RaiseWorkbookSaveError(OutputFile);
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