-
Notifications
You must be signed in to change notification settings - Fork 27
Exemplo bulk
Saulo Martins edited this page Jul 4, 2026
·
1 revision
O preenchimento em massa (bulk) é o modo mais rápido de gerar planilhas com grande volume de linhas. Em vez de posicionar célula a célula com Pos/SetValue, as colunas são definidas uma única vez e as linhas são alimentadas em sequência.
- BulkNewField - define cada coluna (posição, tipo, estilo)
- DefBulkLine - cria a definição da linha
- SetValueBulk - informa o valor de cada coluna
- SetBulkLine - fecha a linha
- FlushBulk - grava os dados na planilha
#include "totvs.ch"
User Function ytst7()
Local nLinha
Local oExcel := custom.excel.Xlsx():New("Pasta1")
Local aCampos := {}
Local nPosBorda2 := oExcel:Borda("ALL")
Local oBordas := oExcel:NewStyle():Setborder(nPosBorda2) //Estilo com bordas
Local nPosCor := oExcel:CorPreenc("FF0000FF") //Cor de fundo azul
Local oStAzul := oExcel:NewStyle(oBordas):Setfill(nPosCor) //Herança de bordas + fundo azul
oExcel:ADDPlan() //Adiciona uma planilha em branco
AADD(aCampos,oExcel:BulkNewField(nColuna=1,cTipo="C",oStyle=oBordas)) //C=Caractere
AADD(aCampos,oExcel:BulkNewField(nColuna=2,cTipo="N",oStyle=oBordas)) //N=Numérico
AADD(aCampos,oExcel:BulkNewField(nColuna=3,cTipo="L",oStyle=oBordas)) //L=Lógico
AADD(aCampos,oExcel:BulkNewField(nColuna=4,cTipo="D",oStyle=oStAzul)) //D=Data
oExcel:DefBulkLine(aCampos)
For nLinha:=1 to 1000
oExcel:SetValueBulk("Linha "+cValToChar(nLinha))
oExcel:SetValueBulk(nLinha)
oExcel:SetValueBulk(nLinha%2==0)
oExcel:SetValueBulk(Date()+nLinha)
oExcel:SetBulkLine()
Next
oExcel:FlushBulk()
oExcel:Save(GetTempPath())
oExcel:OpenApp()
oExcel:Close()
Return- Para volumes muito grandes (100.000+ linhas), crie a instância com o tipo "B" (banco de dados temporário):
custom.excel.Xlsx():New("Pasta1",,"B"). - É possível aplicar regras de formatação dinâmica de linhas passando
oExcel:NewRuleLine(...):GetArray()no segundo parâmetro do DefBulkLine. - O exemplo completo está em exemplo/ytst6.prw (função ytst7) no repositório.
- Olá Mundo
- Exemplo Ler xlsx
- Métodos Principais
- New - Construtor da classe
- Open - Abrir planilha (senha opcional)
- GetError - Obter erro da última abertura
- AddPlan - Adicionar planilha
- SetValue - Definir valor da célula
- GetValue - Obter valor da célula
- Save - Salvar planilha
- SetPassword - Proteger com senha de abertura
- OpenApp / Close - Abrir no Excel / Fechar objeto
- SetsheetProtection - Proteger planilha contra edição
- Métodos Posicionamento e referência
- Métodos Células e Conteúdo
- Métodos Estilos
- NewStyle
- NewStyRules
- CorPreenc
- EfeitoPreenc
- AddFont
- Alinhamento
- Borda
- AddFmt
- AddFmtNum
- FormatCond / FormatCondDup / FormatCondTempo
- DataBar - Barra de dados
- IconSet - Conjunto de ícones
- Cellprotection
- Métodos Dimensões e Agrupamento
- Métodos Impressão
- Métodos Imagens
- Gráficos (Charts)
- Visão Geral — Tipos suportados
- Exemplo Completo
- NewChart - Criar gráfico pelo atalho
- Métodos comuns (todos os tipos)
- AddSerie - Adicionar série de dados
- SetTitulo / SetLegenda / SetGrade - Título, legenda e grade
- Set3D - Visualização 3D
- Insert - Inserir na planilha
- Tipos de gráfico
- ChartBar - Colunas e barras
- ChartLine - Linhas
- ChartPie - Pizza
- ChartScatter - Dispersão XY
- ChartArea / ChartStock / ChartRadar - Área, Ações e Radar
- ChartDoughnut / ChartOfPie - Rosca e Pizza de Pizza
- ChartBubble / ChartSurface - Bolhas e Superfície
- ChartCombo - Combinação de gráficos
- Tabela formatada
- Preenchimento em massa (bulk)
- Exemplo 1 - Básico
- BulkNewField - Definição de novas colunas do bulk
- DefBulkLine - Criar definição de campos para preenchimento em massa
- SetValueBulk - Definir valor para preenchimento de bulk
- SetBulkLine - Preenche a linha em bulk do Excel
- FlushBulk - Atualiza dados do Excel
- Preenchimento Excel com Query/Alias
- Exemplo 1 - Básico
- Alias2Tab - Preenche o Excel baseado no alias
- NewFldTab - Altera definição de campos ou cria novo campo
- DefSubTotal - Cria subtotal e agrupamento de subtotal
- NewRuleLine - Regra de formação de linhas