Logosulfite.app
rafagazani/sulfite 999999

CSV

Renderização em CSV com seções por tipo de band

CSV#

Exporta os dados do relatório como CSV (UTF-8 com BOM). Cada tipo de band gera uma seção no arquivo.

Uso#

final csvBytes = await engine.renderToCsv(context);
File('report.csv').writeAsBytesSync(csvBytes);

Estrutura do arquivo#

=== HEADER ===
title,INVOICE
company,ACME Corporation

=== DETAIL ===
product,quantity,price
Notebook Dell XPS 15,1,2500.0
Mouse Logitech,2,89.9

=== SUMMARY ===
total_label,TOTAL:
total_amount,2679.8

=== AGGREGATES ===
total,2679.8

Delimitador#

O delimitador padrão é vírgula (,). O CsvRenderer aceita configuração de delimitador.

Como os dados são extraídos#

O renderer usa o mixin RendererUtils para extrair campos de cada band:

  • TextElementlabel: id, value: content
  • FieldElementlabel: binding, value: valor resolvido
  • AggregateElementlabel: id, value: valor calculado
  • RichTextElement → spans concatenados como texto plano

Elementos visuais (Line, Rect, Circle, Image, Chart) são ignorados no CSV.

Detail Band#

Se o relatório tem uma DetailBand, os campos dos registros formam colunas:

product,quantity,price
Notebook,1,2500
Mouse,2,89.9

Aggregates#

Se houver agregados calculados, uma seção === AGGREGATES === é adicionada ao final.