Crie, edite, inspecione, calcule e exporte pastas Excel diretamente de codigo Delphi ou C++Builder. HotXLS e uma biblioteca nativa Object Pascal para XLS e XLSX, projetada para ferramentas desktop, lotes, relatorios e geracao de documentos sem automacao do Microsoft Excel.
Este artigo é para teams generating or processing large XLS/XLSX workbooks in desktop utilities, services, or batch jobs. Ele trata large workbook performance como engenharia documental de produção, não como uma chamada isolada de componente.
O risco prático é que large-workbook workflows fail when shared strings, styles, formulas, memory buffers, and output streams are not managed as production resources. Por isso o fluxo precisa de contrato escrito, diagnósticos observáveis e arquivos de regressão representativos.
Decisões de arquitetura
Plan memory, styles, and streaming together. maximum row count, column count, sheet count, and output file size / shared-string strategy, style reuse, formula volume, and image policy
- maximum row count, column count, sheet count, and output file size
- shared-string strategy, style reuse, formula volume, and image policy
- streaming write boundaries, temporary storage, progress, and cancellation
- Excel compatibility limits and downstream import limits
Fluxo de implementação
Measure workbook size during generation. The order below keeps the workflow reviewable for Delphi and C++Builder teams.
- create capacity fixtures that represent real customer data distribution
- reuse styles and strings instead of generating unique resources per cell
- write rows in controlled batches and flush output only at safe boundaries
- track memory, elapsed time, file size, and warning counts per stage
- open large output with the target application before increasing limits
Evidências de validação
Performance evidence for capacity planning. Keep these fields with the output or support record.
- row count, column count, sheet count, style count, shared-string count, and file size
- memory peak, elapsed time, batch size, temporary storage, and cancellation result
- formula count, image count, comment count, and relationship count
- target Excel or importer open time for representative output
Rows are not the only scale factor
Workbook size grows with cells, styles, shared strings, formulas, images, comments, and relationships. A performance plan should reduce redundant resources and choose streaming only where it fits the output contract.
Notas de implementação para produção
Trate HotXLS Component: large workbook performance in Delphi como um contrato de serviço explícito em torno das chamadas HotXLS, separando validação de entrada, gravação da pasta de trabalho, verificação da saída e evidências para suporte
- Defina fonte de dados, intervalos de células e formato de saída antes de criar a pasta de trabalho
- Registre linhas, planilhas, avisos e caminho de saída em evidências revisáveis
- Encapsule detalhes da aplicação em helpers testáveis, não em eventos de interface
- Reabra ou inspecione o arquivo salvo antes de entregá-lo a outro sistema ou ao cliente
Falhas que devem ser ensaiadas
- SaveAs com sucesso não prova que o contrato de negócio continua correto
- Fontes, permissões e configurações regionais podem variar entre servidor e máquina de desenvolvimento
- Logs não devem expor senhas, dados de clientes nem links internos
Exemplo Delphi detalhado
O exemplo Delphi a seguir mostra uma fronteira de serviço prática para este tema, mantendo política, logs e validação em uma camada testável
procedure WriteLargeLedgerWorkbook(const OutputFile: string; const Source: ILedgerReader);
var
Wb: TXLSXWorkbook;
Sh: IXLSWorksheet;
RowIndex: Integer;
Batch: TArray<TLedgerRow>;
Item: TLedgerRow;
Metrics: TWorkbookMetrics;
begin
Wb := TXLSXWorkbook.Create;
try
Sh := Wb.Sheets[0];
Sh.Name := 'Ledger';
WriteHeaderRow(Sh, ['Account', 'Date', 'Description', 'Debit', 'Credit', 'Balance']);
RowIndex := 2;
Metrics := StartWorkbookMetrics('large-ledger');
repeat
Batch := Source.ReadNextBatch(5000);
for Item in Batch do
begin
WriteLedgerRow(Sh, RowIndex, Item);
Inc(RowIndex);
end;
CheckMemoryAndTempQuota(Metrics, RowIndex - 2);
FlushProgressMetric(Metrics, RowIndex - 2);
until Length(Batch) = 0;
Sh.Range['A1:F1'].ApplyBuiltinStyle(xbsTitle);
AddSummarySheet(Wb, Metrics, RowIndex - 2);
AssertWorkbookSizePolicy(OutputFile, RowIndex - 2);
if Wb.SaveAs(OutputFile) <> 1 then
RaiseWorkbookSaveError(OutputFile);
finally
Wb.Free;
end;
end;
Checklist de produção
- 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