XLS - Excel
Introdução
O Netuno gera arquivos EXCEL compatível com o LibreOffice, OpenOffice, Microsoft Office, Google Drive, etc.
Através do recurso XLS que permite uma abstração low-code do Apache POI para as diversas linguagens de programação suportas pelo Netuno.
Podemos tanto gerar arquivos XLSX, XLS ou ODS.
A aplicação que vem com o Netuno denominada demo (aplicação de demonstração) contém bastantes exemplos das possíveis implementações de código em várias linguagens, incluindo a demonstração da exportação de planilhas através do serviço export-excel
que se localiza em:
/apps/demo/server/services/samples/groovy/export-excel.groovy
/apps/demo/server/services/samples/javascript/export-excel.js
/apps/demo/server/services/samples/kotlin/export-excel.kts
/apps/demo/server/services/samples/python/export-excel.py
/apps/demo/server/services/samples/ruby/export-excel.rb
Inicialização
Para iniciar o recurso XLS:
const excel = _xls.create()
Cria o objeto que contém o contexto do novo arquivo que será construído, com uma folha de cálculos vazia.
Formatação
A definição de estilos de formatação visual, ou seja formato de datas, horas, dinheiro, entre outros, deve ser feita antes da definição de valores das células, por que ao definir os valores das células é possível associar junto o seu estilo de formatação.
Então como é demonstrado no exemplo que vem na aplicação demo
, as formatações são definidas logo no início do código.
Para formatar datas:
const styleDate = excel.cellStyleFormat("dd/mm/yy")
Para formatar horários:
const styleTime = excel.cellStyleFormat("hh:mm:ss")
Para formatar datas com horários:
const styleDateTime = excel.cellStyleFormat("dd/mm/yyyy hh:mm:ss")
Para formatar valores de dinheiro em euro:
const styleMoneyEuro = excel.cellStyleFormat("€#,##0.00;\\-€#,##0.00")
Para formatar valores de dinheiro em reais:
const styleMoneyReal = excel.cellStyleFormat("R$#,##0.00;\\-R$#,##0.00")
Para formatar valores em porcentagem:
const stylePercentage = excel.cellStyleFormat("0.00%")
Aparência
A definição de estilos de aparência visual, ou seja a aparência de células como cores, fonte, bordas, alinhamento, entre outros, deve ser feita antes da definição de valores das células, por que ao definir os valores das células é possível associar junto o seu estilo de aparência.
Então como é demonstrado no exemplo que vem na aplicação demo
, as aparências são definidas logo no início do código.
Exemplo para a definição de cores e alinhamento:
const styleHeader = excel.cellStyle()
styleHeader.setFillPattern(_xls.fillPattern("solid-foreground"))
styleHeader.setFillBackgroundColor(_xls.color("black"))
styleHeader.setAlignment(_xls.horizontalAlignment("center"))
Documentação com todos os métodos do objeto de Estilos no Apache POI.
Definição do estilo de bordas:
const styleData = excel.cellStyle()
styleData.setBorderBottom(_xls.borderStyle('thin'))
styleData.setBorderTop(_xls.borderStyle('thin'))
styleData.setBorderLeft(_xls.borderStyle('thin'))
styleData.setBorderRight(_xls.borderStyle('thin'))
Documentação com todos os métodos do objeto de Estilos no Apache POI.
Cria um novo estilo de fonte para o texto, associa as definições da fonte em um determinado estilo da célula já existente:
const fontTitle = excel.font()
fontTitle.setBold(true)
fontTitle.setFontHeightInPoints(14)
fontTitle.setColor(_xls.color('yellow'))
// Define a fonte do styleHeader
styleHeader.setFont(fontTitle)
Documentação com todos os métodos do objeto de Fonte no Apache POI.
Imagem
Para inserir uma imagem na planilha que está localizada em storage/samples/export-excel/logo.png
internamente na aplicação:
excel.insertPicture(
_storage.filesystem("server", "samples/export-excel", "logo.png"),
1, // Número da Coluna
1 // Número da Linha
).resize(2.3)
Para inserir uma imagem que está na aplicação em public/images/logo.png
:
excel.insertPicture(
_app.file("public/images/logo.png"),
10, // Número da Coluna
1 // Número da Linha
).resize(1.5)
Documentação com todos os métodos do objeto de Imagem no Apache POI.
Mesclar Células
Para juntar células em uma região utilizamos o método mergedRegion
.
Sendo que a ordem dos parâmetros são:
- Linha Inicial
- Coluna Inicial
- Linha Final
- Coluna Final
As referências numéricas de posicionamento começam sempre em zero.
Neste exemplo abaixo será mesclada todas as células a partir da coluna 10 até a coluna 15 que estão na linha 3:
excel.mergedRegion(2, 9, 2, 14)
Células
Para obter o objeto que representa uma célula:
// Obtém a célula que está na coluna B e na linha 2:
const celula = excel.cell(1, 1)