Tags do MS Excel do Gerador de Documentos
Uma "tag" refere-se a uma expressão que o Gerador de Documentos pode substituir em um modelo de documento usando dados JSON.
Dados
Os dados JSON podem ser armazenados no Object Storage ou especificados em linha em uma Solicitação.
Exemplo - Armazenado no Serviço Object Storage
"data": {
"source": "OBJECT_STORAGE",
"namespace": "my_namespace",
"bucketName": "my_bucket",
"objectName": "my_folder/names.json"
}
Exemplo - Especificado em linha em data.content
"data": {
"source": "INLINE",
"content": [{"name":"John"},{"name":"Monica"}]
}
Tags
As tags contêm caminhos para algum valor nos dados JSON. Por exemplo, considerando esses dados:
{
"customer": {
"first_name": "Jack",
"last_name": "Smith"
}
}
Você poderia usar isso em seu modelo:
Hello {customer.first_name} {customer.last_name}!
Para gerar este texto:
Hello Jack Smith!
Delimitadores de Tag
Você pode substituir os delimitadores de tag padrão {
e }
por estes valores:
{{
e}}
{{{
e}}}
Você pode especificar os delimitadores de tag nas propriedades personalizadas do modelo do MS Excel usando document_generator_start_delimiter
e document_generator_end_delimiter
, conforme mostrado aqui:

Com o exemplo anterior, você pode usar isso em seu modelo:
Hello {{{customer.first_name}}} {{{customer.last_name}}}!
Para gerar este texto:
Hello Jack Smith!
Tag Básica
Sintaxe: {basic}
Usado para injetar textos, números ou valores boolianos.
Exemplos
Dados
{
"a_first_name": "John",
"a_last_name": "Smith",
"a_number": 42,
"a_boolean": true
}
Modelo

Saída

Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-Basic.xlsx | Excel-Basic.json | Excel-Básico-output.xlsx |
Tag de Loop Vertical
Sintaxe: {vl:loop}...{/loop}
ou {#loop}...{/loop}
Uma tag {vl:loop}
é usada para produzir cópias de um intervalo de células verticalmente. A região copiada é determinada pela posição das tags {vl:loop}
e {/loop}
. {vl:loop}
e {/loop}
estão incluídos na região. As células abaixo da região são empurradas para baixo.
Exemplo
Dados
{
"customers": [
{
"name": "John Smith",
"age": 23,
"is_last_bill_paid": true
},
{
"name": "Alice Martin",
"age": 34,
"is_last_bill_paid": false
},
{
"name": "Joe West",
"age": 45,
"is_last_bill_paid": false
},
{
"name": "Mary Moss",
"age": 56,
"is_last_bill_paid": true
}
]
}
Modelo

Saída

Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-VLoop.xlsx | Excel-VLoop.json | Excel-VLoop-output.xlsx |
Tag de Loop Horizontal
Sintaxe: {hl:loop}...{/loop}
ou {:loop}...{/loop}
Uma tag {hl:loop}
é usada para produzir cópias de uma região de células horizontalmente. A região copiada é determinada pela posição das tags {hl:loop}
e {/loop}
. {hl:loop}
e {/loop}
estão incluídos na região. As células à direita da região são empurradas para a direita.
Exemplo
Dados
{
"days": [
{
"day_of_week": "Monday",
"steps": 1023,
"calories": 145
},
{
"day_of_week": "Tuesday",
"steps":2345,
"calories": 267
},
{
"day_of_week": "Wednesday",
"steps": 3101,
"calories": 345
},
{
"day_of_week": "Thursday",
"steps": 4523,
"calories": 412
},
{
"day_of_week": "Friday",
"steps": 4321,
"calories": 389
}
]
}
Modelo

Saída

Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-HLoop.xlsx | Excel-HLoop.json | Excel-HLoop-output.xlsx |
Tag de Imagem
Sintaxe: {im:image}
, {image:image}
ou {%image}
Uma tag {im:image}
é usada para injetar uma imagem em um documento. É possível fornecer imagens de um Bucket do OCI Object Storage ou de um URL. As imagens devem ser fornecidas como um objeto, por exemplo:
{
"my_image": {
"source": "OBJECT_STORAGE",
"objectName": "image.png",
"namespace": "object_storage_namespace",
"bucketName": "my_bucket_name",
"mediaType": "image/png"
}
}
Informações Gerais
O esquema específico para cada tipo de origem é descrito abaixo. Além disso, as seguintes propriedades podem ser (opcionalmente) incluídas no objeto de imagem para controlar a formatação da imagem:
- largura: Um
string
de dígitos, seguido pela unidade de medida. E.G.200px
. Define a largura da imagem. - altura: Um
string
de dígitos, seguido por unidade de medida. E.G.200px
. Define a altura da imagem. - alt_text: Um
string
. Isso será definido como o texto alternativo da imagem.
Unidades de medida suportadas:
O Gerador de documentos suporta as seguintes unidades de medida para imagens:
- px (pixels)
- em (polegadas)
- cm (centímetros)
- % (porcentagem)
Tamanho padrão das imagens inseridas:
- O tamanho original é preservado.
Dimensionamento de imagens:
Se apenas uma dimensão de imagem for fornecida, o Gerador de Documentos calculará um valor em escala para a dimensão ausente, a fim de preservar a proporção. Por exemplo:
- Se você fornecer uma largura, mas não uma altura, uma altura dimensionada será calculada com base nas dimensões nativas da imagem e na largura fornecida.
- Se você fornecer uma altura, mas não uma largura, uma largura dimensionada será calculada com base nas dimensões nativas da imagem e na altura fornecida.
Formatos Suportados
O Gerador de Documentos suporta os seguintes formatos de imagem:
- PNG
- JPG
- GIF
- BMP
Esquemas
OCI Object Storage
source
: deve ser definido comoOBJECT_STORAGE
objectName
: O caminho e o nome do arquivonamespace
: O namespace do seu bucket de armazenamento de objetosbucketName
: O nome do bucket que contém o arquivomediaType
: O Tipo de Mídia (MIME) da imagem
Exemplo - Largura e altura especificadas
Dados
{
"my_image": {
"source": "OBJECT_STORAGE",
"objectName": "image.png",
"namespace": "object_storage_namespace",
"bucketName": "my_bucket_name",
"mediaType": "image/png",
"width": "400px",
"height": "200px"
}
}
Modelo

Resultado

URL
source
: deve ser definido comoURL
url
: o URL da imagem no formatostring
Observação: para usar imagens da Internet, o Gerador de Documentos precisa de acesso de saída à Internet. Por exemplo, se o Gerador de Documentos estiver em execução em uma sub-rede privada no OCI, você poderá configurar um Gateway NAT para permitir que o Gerador de Documentos se conecte à Internet.
Exemplo - Largura e altura não especificadas
Dados
{
"my_image": {
"source": "URL",
"url": "https://www.oracle.com/.../.jpg"
}
}
Modelo

Resultado

URL de Dados
O Gerador de Documentos também suporta a capacidade de transmitir imagens dentro de URLs de Dados. A imagem deve ser codificada em Base64.
source
: deve ser definido comoURL
url
: o URL da imagem no formatostring
Exemplo - Somente altura é especificada
Dados
{
"my_image": {
"source": "URL",
"url": "data:image/png;base64,iVBORw0KG...go",
"height": "150px"
}
}
Modelo

Resultado

Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-Images.xlsx | Excel-Images.json | Excel-Imagens-output.xlsx |
Tag de Estilo da Célula
Sintaxe: {cs:style}
ou {cellStyling:style}
Uma tag {cs:style}
é usada para adicionar Estilo a uma célula do Excel. As opções de estilo incluem:
- Fonte
- Alinhamento horizontal
- Alinhamento vertical
- Cor de Fundo
- Bordas
Considerações de estilo:
- Vários Estilos de Célula podem ser aplicados a cada célula. Eles serão aplicados da esquerda para a direita
- O estilo considera o estilo existente de cada célula antes de aplicar o estilo adicional
- O estilo será aplicado a toda a célula
StyleColor
- colorType (obrigatório):
OPAQUE_HEX_RGB
- valor: String hexadecimal de 6 dígitos
Exemplo
{
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "FFFF00"
}
}
BorderStyle
- borderStyle (obrigatório):
NONE
,MEDIUM
,DOUBLE
,DASHED
,DOTTED
,MEDIUM_DASHED
,MEDIUM_DASH_DOT
,MEDIUM_DASH_DOT_DOT
- cor: StyleColor
Exemplo
{
"top": {
"borderStyle": "MEDIUM",
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "FFFF00"
}
}
}
Fonte
- familyName: String
- sizeInPoints: número
- cor: StyleColor
- isItalic: booliano
- isBold: booliano
- isStrikethrough: booliano
- sublinhado:
NONE
,SINGLE
,DOUBLE
- textPosition:
BASELINE
,SUPERSCRIPT
,SUBSCRIPT
Exemplo
{
"font": {
"familyName": "Cookie",
"sizeInPoints": 20,
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "FF0000"
},
"isBold": true,
"isItalic": true,
"isStrikethrough": true,
"underline": "DOUBLE",
"textPosition": "SUPERSCRIPT"
}
}
Alinhamento Horizontal
- horizontalAlignment:
LEFT
,CENTER
,RIGHT
,JUSTIFY
Exemplo
{
"horizontalAlignment": "RIGHT"
}
Alinhamento Vert.
- verticalAlignment:
TOP
,CENTER
,BOTTOM
Exemplo
{
"verticalAlignment": "TOP"
}
Cor de fundo da célula
- backgroundType (obrigatório):
SINGLE_FILL_COLOR
- cor: StyleColor
Exemplo
{
"background": {
"backgroundType": "SINGLE_FILL_COLOR",
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "DDDDDD"
}
}
}
Bordas
- topo: BorderStyle
- parte inferior: BorderStyle
- esquerda: BorderStyle
- direita: BorderStyle
Exemplo
{
"top": {
"borderStyle": "MEDIUM",
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "FFFF00"
}
},
"bottom": {
"borderStyle": "DASHED",
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "FF00FF"
}
},
"left": {
"borderStyle": "DOTTED",
},
"right": {
"borderStyle": "MEDIUM_DASHED",
}
}
Exemplo
Dados
{
"cookieBold": {
"font": {
"familyName": "Cookie",
"sizeInPoints": 20,
"isBold": true
}
},
"products": [
{
"name": "Winter Gloves",
"remaining": 444,
"s1": {
"font": {
"underline": "DOUBLE"
}
},
"s2": {
"background": {
"backgroundType": "SINGLE_FILL_COLOR",
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "DDDDDD"
}
}
}
},
{
"name": "Snow Shovel",
"remaining": 11,
"s2": {
"font": {
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "FF0000"
}
},
"background": {
"backgroundType": "SINGLE_FILL_COLOR",
"color": {
"colorType": "OPAQUE_HEX_RGB",
"value": "BBBBBB"
}
}
}
}
]
}
Modelo

Saída

Observações
Vamos analisar a Célula B3. O modelo contém {name}{cs:cookieBold}{cs:s1}
- O preenchimento de Backgroud amarelo é do estilo de célula original
{name}
: é resolvido como "Luvas de Inverno" dos Dados{cs:cookieBold}
: O Cookie da Fonte é do estilo "cookieBold" definido na raiz dos Dados{cs:s1}
: O sublinhado duplo é do estilo "s1" para luvas de inverno
Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-CellStyling.xlsx | Excel-CellStyling.json | Excel-CellStyling-output.xlsx |
Tag de Hiperlink
Sintaxe: {hy:hyperlink}
, {hyperlink:hyperlink}
ou {*hyperlink}
Uma tag {hy:hyperlink}
é usada para inserir um hiperlink clicável (incluindo endereços de e-mail) em um documento.
Existem 2 tipos de hiperlinks:
- Externo/a(s)
- Interno
Hiperlinks Externos
Um hiperlink que se refere a algo fora do Documento do Excel. Ele deve ser fornecido como um objeto com as seguintes propriedades:
type
: EXTERNOurl
: um URL no formato de string. Por exemplo:https://www.oracle.com
url_text
(opcional): uma string a ser exibida em vez do URL
Hiperlinks Internos
Um hiperlink que se refere a células dentro do Documento do Excel. Ele deve ser fornecido como um objeto com as seguintes propriedades:
type
: INTERNOlink
: uma referência do Excel no formato de string. Exemplo:Sheet1!D6
para fazer referência à célulaD6
da PlanilhaSheet1
link_text
(opcional): uma string a ser exibida em vez do link.tooltip
(opcional): uma string a ser exibida como uma Dica da ferramenta
Exemplo
Dados
{
"external_link": {
"type": "EXTERNAL",
"url": "https://www.oracle.com",
"url_text": "Link to Oracle.com"
},
"internal_link": {
"type": "INTERNAL",
"link": "Sheet1!D6",
"link_text": "Link to cell D6"
},
"links": [
{
"name": "External link",
"link": {
"type": "EXTERNAL",
"url": "https://www.oracle.com",
"url_text": "This is an external link to oracle.com in a Loop"
}
},
{
"name": "Internal link",
"link": {
"type": "INTERNAL",
"link": "Sheet1!D6",
"link_text": "This is an internal link to cell D6 in a Loop",
"tooltip": "Hello from tooltip!"
}
}
]
}
Modelo

Saída

Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-Hyperlinks.xlsx | Excel-Hyperlinks.json | Excel-Hiperlinks-output.xlsx |
Tag de quebra de página
Sintaxe: {pb:boolean}
ou {pageBreak:boolean}
Uma tag {pb:boolean}
cria uma Quebra de Página quando a condição boolean
é verdadeira.
Exemplo
Dados
{
"movies": [
{
"name": "Arrival",
"actors": [
{
"name": "Amy Adams"
},
{
"name": "Jeremy Renner"
}
],
"pageBreak_condition": true
},
{
"name": "Groundhog Day",
"actors": [
{
"name": "Bill Murray"
},
{
"name": "Andie MacDowell"
}
],
"pageBreak_condition": false
},
{
"name": "Notting Hill",
"actors": [
{
"name": "Hugh Grant"
},
{
"name": "Julia Roberts"
},
{
"name": "Rhys Ifans"
}
],
"pageBreak_condition": false
}
]
}
Modelo

Saída

Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-PageBreak.xlsx | Excel-PageBreak.json | Excel-PageBreak-output.xlsx |
Ignorar Tag
Sintaxe: {skip}
Uma tag {skip}
em um nome de Planilha impedirá qualquer resolução de tag nessa planilha.
Exemplo
Dados
{
"a_first_name": "Fred",
"a_last_name": "Flintstone",
"a_number": 42,
"a_boolean": true
}
Modelo

Saída

Documentos de amostra
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-Skip.xlsx | Excel-Skip.json | Excel-Ignorar-output.xlsx |
Tag - Exemplos Avançados
Aninhamento de loop
Neste exemplo, temos 3 loops aninhados. Dois loops verticais e um loop horizontal.
Dados
Os 3 níveis de loops nos Dados são genres, movies e atores.
{
"genres": [
{
"name": "Comedy",
"movies": [
{
"name": "Groundhog Day",
"actors": [
{
"name": "Bill Murray",
"birth_year": 1950
},
{
"name": "Andie MacDowell",
"birth_year": 1958
}
]
},
{
"name": "Notting Hill",
"actors": [
{
"name": "Hugh Grant",
"birth_year": 1960
},
{
"name": "Julia Roberts",
"birth_year": 1967
},
{
"name": "Rhys Ifans",
"birth_year": 1967
}
]
}
]
},
{
"name": "Science Fiction",
"movies": [
{
"name": "Arrival",
"actors": [
{
"name": "Amy Adams",
"birth_year": 1974
},
{
"name": "Jeremy Renner",
"birth_year": 1971
}
]
},
{
"name": "The Matrix",
"actors": [
{
"name": "Keanu Reeves",
"birth_year": 1964
},
{
"name": "Carrie-Anne Moss",
"birth_year": 1967
},
{
"name": "Laurence Fishburne",
"birth_year": 1961
}
]
}
]
}
]
}
Modelo

Saída
Passo a passo da expansão Loops neste exemplo
Os loops são resolvidos em cada Planilha da linha superior para a linha inferior. Cada linha é processada da esquerda para a direita.
- O loop B2:D6 (gêneros) é expandido verticalmente.
- O loop B3:D6 (filmes - Comédia) é expandido horizontalmente.
- O loop B5:D5 (atores - Dia da Marmota) é expandido verticalmente.
- O loop E5:G5 (atores - Notting Hill) é expandido verticalmente.
- O loop B9:D13 (filmes - Ficção Científica) é expandido horizontalmente.
- O loop B11:D11 (atores - Chegada) é expandido verticalmente.
- O loop E11:G11 (atores - A Matriz) é expandido verticalmente.

Observações
- Cada matriz de dados pode ser referenciada em um máximo de 1 loop em cada planilha.
- Todas as tags em loops são resolvidas no contexto do loop. Neste exemplo, a tag básica
{name}
é usada em cada loop com um significado diferente (nome do gênero, nome do filme, nome do ator).
Modelo MS Excel | Dados JSON | Saída |
---|---|---|
Excel-Loops.xlsx | Excel-Loops.json | Excel-Loops-output.xlsx |
Gráficos
Neste exemplo, criamos um Modelo que contém 2 gráficos. Os dados para os gráficos vêm de um intervalo de células que contém um loop vertical. O título do gráfico refere-se a uma célula que contém uma tag básica.
Dados
{
"chart_title": "Revenue/Expense",
"months": [
{
"month": "January",
"revenue": 23,
"expense": 19
},
{
"month": "February",
"revenue": 24,
"expense": 22
},
{
"month": "March",
"revenue": 25,
"expense": 18
}
]
}
Modelo
