-
Notifications
You must be signed in to change notification settings - Fork 27
Exemplo query alias
Saulo Martins edited this page Jul 4, 2026
·
1 revision
O método Alias2Tab preenche a planilha diretamente a partir de um alias (tabela posicionada ou query), buscando automaticamente as definições dos campos na SX3 (descrição, picture, combo).
#include "totvs.ch"
User Function ytst6()
Local oExcel
Local cAlias
Local oTabela
oExcel := custom.excel.Xlsx():New()
oExcel:ADDPlan(cNome="SB1",cCor="1F497D") //Adiciona nova planilha
cAlias := MpSysOpenQuery("SELECT * FROM "+RetSqlName("SB1")+" WHERE D_E_L_E_T_=' '")
oTabela := oExcel:AddTabela("Tabela2") //Cria a tabela formatada
oTabela:Alias2Tab(cAlias=cAlias,lSx3=.T.) //lSx3=.T. buscar definições dos campos na SX3
(cAlias)->(DbCloseArea())
oTabela:AddTotal(xColuna="Codigo",xValor=0,cFunction="COUNTA") //Função COUNTA (Contar Valores)
oTabela:AddTotais() //Adiciona a linha de totais
oTabela:Finish() //Fecha a edição da tabela
oExcel:Save(GetTempPath())
oExcel:OpenApp()
oExcel:Close()
ReturnLocal jCab, oRegraLinha
Local oExcel := custom.excel.Xlsx():New(cNomeFile="TstYExcel",cTipo="A")
Local oPosMoeda := oExcel:NewStyle():SetnumFmt(44)
Local nPosCor3 := oExcel:CorPreenc("FF4F81BD")
Local nPosFont3 := oExcel:AddFont(nTamanho=11,xCorRGB="FFFFFFFF",cNome="Calibri",cfamily="2")
Local oPosCAB := oExcel:NewStyle():SetFont(nPosFont3):Setfill(nPosCor3)
Local oEstilo1 := oExcel:NewStyle():Setborder(oExcel:Borda("ALL"))
Local oSubTotal := oExcel:NewStyle(oEstilo1):Setfill(nPosCor3):SetFont(nPosFont3)
Local aOnlyFieds:= {"B1_COD","B1_DESC","B1_TIPO","B1_GRUPO","B1_UM","B1_LOCPAD","B1_PICM","B1_PRV1"}
oExcel:ADDPlan(cNome="SB1",cCor="E26B0A")
SB1->(DBSetOrder(4)) //B1_FILIAL, B1_GRUPO, B1_COD
SB1->(DbGoTop())
oExcel:Pos(1,1):SetValue("Cadastro de produtos")
//Definir detalhe dos campos manualmente
jCab := jSonObject():New()
oExcel:NewFldTab(jCab=jCab,cCampo="B1_PRV1")
jCab["B1_PRV1"]["style"] := oPosMoeda //Campo moeda
oExcel:NewFldTab(jCab=jCab,cCampo="B1_GRUPO")
jCab["B1_GRUPO"]["ordem"] := 1 //Alterar ordem para 1
oExcel:NewFldTab(jCab=jCab,cCampo="NEWCAMPO",cDescricao="Registro",nTamanho=10,cPicture="9",cTipo="N",cDados="Recno()",lNewCampo=.T.) //Campo novo
//Criar subtotal por grupo
oExcel:DefSubTotal(cChave="B1_GRUPO",lSubTotal=.T.,lTotalGeral=.T.,lAgrupar=.T.,nNivel=2)
oExcel:AddSubTotal(cCampo="B1_GRUPO",cFuncao="last") //Último conteúdo
oExcel:AddSubTotal(cCampo="B1_PRV1",cFuncao="9") //Somar
oExcel:AddSubTotal(cCampo="B1_PICM",cFuncao="1") //Média
//Regra para formatação das linhas de subtotal
oRegraLinha := oExcel:NewRuleLine({|| oExcel:cSubTotalTp })
oRegraLinha:AddRegra(cRegra="S",oStyle=oSubTotal,lPrincipal=.F.) //S = SubTotal
oRegraLinha:AddRegra(cRegra="T",oStyle=oSubTotal,lPrincipal=.F.) //T = Total Geral
oExcel:Alias2Tab(cAlias="SB1",oStyle=oPosCAB,lSx3=.T.,jCab=jCab,lExibirCab=.T.,aOnlyFieds=aOnlyFieds,xRegraStyle=oRegraLinha,oStyleLinha=oEstilo1)
oExcel:Save(GetTempPath())
oExcel:OpenApp()
oExcel:Close()| Método | Descrição |
|---|---|
| Alias2Tab | Preenche o Excel baseado no alias |
| NewFldTab | Altera definição de campos ou cria novo campo |
| DefSubTotal | Cria subtotal e agrupamento |
| NewRuleLine | Regra de formatação de linhas |
| AddTabela | Formato tabela do Excel |
- 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