Cree, edite, inspeccione, calcule y exporte libros de Excel directamente desde código Delphi o C++Builder. HotXLS es una biblioteca nativa Object Pascal para XLS y XLSX, disenada para herramientas de escritorio, trabajos por lotes, informes y generacion de documentos sin automatización de Microsoft Excel.
Este artículo está dirigido a developers generating workbooks that users continue editing after export. Presenta data validation, AutoFilter, and worksheet tables como una práctica de ingeniería documental para producción, no como una llamada aislada al componente.
El riesgo principal es que editable workbooks become error-prone when valid values, filters, table ranges, and totals are not generated as part of the data contract. Por eso el flujo necesita contrato escrito, diagnósticos observables y archivos de regresión reales.
Decisiones de arquitectura
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
Flujo de implementación
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
Evidencia de validación
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.
Notas de implementación para producción
Trata HotXLS: data validation, AutoFilter, and worksheet tables como un contrato de servicio claro alrededor de las llamadas a HotXLS, separando validación de entrada, escritura del libro, comprobación de salida y evidencias de soporte
- Define origen de datos, rangos de celdas y formato de salida antes de crear el libro
- Registra filas, hojas, advertencias y ruta de salida en una evidencia revisable
- Encapsula los detalles propios de la aplicación en helpers comprobables, no en eventos de interfaz
- Vuelve a abrir o inspecciona el archivo guardado antes de entregarlo a otro sistema o al cliente
Fallos que conviene ensayar
- Que SaveAs devuelva éxito no demuestra que el contrato de negocio siga siendo correcto
- Fuentes, permisos y configuración regional pueden cambiar entre servidor y equipo de desarrollo
- Los logs no deben exponer contraseñas, datos de clientes ni enlaces internos
Ejemplo Delphi detallado
El siguiente ejemplo Delphi muestra una frontera de servicio práctica para este tema y mantiene políticas, registro y validación en una capa comprobable
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;
Lista de salida a producción
- 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