Skip to content

method FormatCond

Saulo Martins edited this page Jul 5, 2026 · 2 revisions

FormatCond

:FormatCond(cRefDe,cRefAte,nEstilo,cOperator,xFormula)
Cria uma regra de formatação condicional em um intervalo de células


Parâmetros

Parâmetro Tipo Descrição Obrigatório Obs
cRefDe caractere Referência inicial (ex: "A1") X Use o Ref para converter linha/coluna
cRefAte caractere Referência final (ex: "A10")
nEstilo numérico Posição do estilo criado pelo ADDdxf (veja abaixo) X
cOperator caractere Operador da regra (tabela abaixo) X
xFormula caractere, numérico ou array Valor/fórmula da comparação X Para "between", array com duas posições

Operadores

Operador Descrição
= Igual
!= Diferente
> Maior que
>= Maior ou igual
< Menor que
<= Menor ou igual
$ Contém texto
!$ Não contém
between Está contido (xFormula = array com {de,até})
FORMULA Usa a fórmula informada em xFormula como expressão

Retorno

Nulo


Objetos auxiliares para o estilo condicional

O estilo usado na formatação condicional é criado pelo ADDdxf, que recebe objetos criados pelos métodos abaixo:

Método Descrição Retorno
Font(nTamanho,cCorRGB,cNome,cfamily,cScheme,lNegrito,lItalico,lSublinhado,lTachado) Objeto de fonte Array
Preenc(cBgCor,cFgCor,cType) Objeto de preenchimento (cor Alpha+RGB, tipo padrão "solid") Array
ObjBorda(cTipo,cCor,cModelo) Objeto de borda ("C"-Cima, "B"-Baixo, "E"-Esquerda, "D"-Direita, "ALL", pode combinar ex: "ED") Array
ADDdxf(aFont,aCorPreenc,aBorda) Cria o estilo condicional com os objetos acima Numérico (posição do estilo)

Exemplo

Local oExcel  := custom.excel.Xlsx():New(cNomeFile="TstYExcel",cTipo="A")
Local oFont, oCorPre, oCorPre2, oCorPre3, oBorda
Local nPosVerm, nPosVerd, nPosAmar
oExcel:ADDPlan()
oExcel:Pos(13,1):SetValue(-10)
oExcel:Pos(14,1):SetValue(0)
oExcel:Pos(15,1):SetValue(5)
oExcel:Pos(16,1):SetValue(10)
oExcel:Pos(17,1):SetValue(20)
oExcel:Pos(18,1):SetValue(25)

//Cria objetos para serem usados na formatação
oFont   := oExcel:Font(nTamanho=12,cCorRGB="FFFFFF",cNome="Calibri",cfamily="2",lNegrito=.T.,lItalico=.F.,lSublinhado=.F.,lTachado=.F.) //Cor branca negrito
oCorPre := oExcel:Preenc("FF0000")  //Fundo vermelho
oCorPre2:= oExcel:Preenc("00FF00")  //Fundo verde
oCorPre3:= oExcel:Preenc("FFFF00")  //Fundo amarelo
oBorda  := oExcel:ObjBorda(cTipo="ALL",cCor="000000") //Borda preta
//Cria os estilos condicionais
nPosVerm := oExcel:ADDdxf(aFont=oFont,aCorPreenc=oCorPre,aBorda=oBorda)
nPosVerd := oExcel:ADDdxf(aFont=oFont,aCorPreenc=oCorPre2,aBorda=oBorda)
nPosAmar := oExcel:ADDdxf(aCorPreenc=oCorPre3,aBorda=oBorda)

oExcel:FormatCond(cRefDe=oExcel:Ref(13,1),cRefAte=oExcel:Ref(18,1),nEstilo=nPosVerm,cOperator="<",xFormula=0)             //Número negativo em vermelho
oExcel:FormatCond(cRefDe=oExcel:Ref(13,1),cRefAte=oExcel:Ref(18,1),nEstilo=nPosVerd,cOperator="between",xFormula={10,20}) //Entre 10 e 20 em verde
oExcel:FormatCond(cRefDe=oExcel:Ref(13,1),cRefAte=oExcel:Ref(18,1),nEstilo=nPosAmar,cOperator="=",xFormula="0")           //Igual a zero em amarelo

oExcel:Save(GetTempPath())
oExcel:OpenApp()
oExcel:Close()

Obs

Os estilos criados pelo ADDdxf pertencem ao arquivo (workbook) e podem ser reutilizados em outras planilhas (abas).


Formatação condicional avançada

Além do FormatCond (operadores/fórmula), a classe Xlsx tem métodos prontos para os tipos de formatação condicional mais usados do Excel: barra de dados, conjunto de ícones, duplicados/exclusivos e período temporal.

Método Descrição
DataBar Barra de dados proporcional ao valor da célula
IconSet Conjunto de ícones (semáforo, setas, etc.) por faixa de valor
FormatCondDup Destaca valores duplicados ou exclusivos no intervalo (veja abaixo)
FormatCondTempo Destaca datas dentro de um período relativo a hoje (veja abaixo)

FormatCondDup

:FormatCondDup(cRefDe,cRefAte,nEstilo,lUnico)
Cria uma regra de formatação condicional para valores duplicados ou exclusivos (únicos) no intervalo

Parâmetros

Parâmetro Tipo Descrição Obrigatório Obs
cRefDe caractere Referência inicial (ex: "E2") X
cRefAte caractere Referência final (ex: "E7")
nEstilo numérico Posição do estilo criado pelo ADDdxf (veja acima) X
lUnico lógico .T. destaca valores exclusivos (uniqueValues) / .F. destaca duplicados (duplicateValues) Default .F.

Retorno

Nulo

Exemplo

Local nCont
Local aNome     := {"Ana","Bruno","Ana","Carlos","Bruno","Diego"}
Local oExcel    := custom.excel.Xlsx():New(cNomeFile="TstYExcel",cTipo="A")
Local oCorPre   := oExcel:Preenc("FF0000")  //Fundo vermelho
Local oCorPre2  := oExcel:Preenc("00FF00")  //Fundo verde
Local nPosVerm  := oExcel:ADDdxf(aCorPreenc=oCorPre)
Local nPosVerd  := oExcel:ADDdxf(aCorPreenc=oCorPre2)
oExcel:ADDPlan(cNome="FormatCondAvancada")
oExcel:Pos(1,5):SetValue("Nome")
For nCont:=1 to Len(aNome)
	oExcel:Pos(nCont+1,5):SetValue(aNome[nCont])
Next
oExcel:FormatCondDup(cRefDe="E2",cRefAte="E7",nEstilo=nPosVerm,lUnico=.F.) //Duplicados em vermelho
oExcel:FormatCondDup(cRefDe="E2",cRefAte="E7",nEstilo=nPosVerd,lUnico=.T.) //Exclusivos em verde
oExcel:Save(GetTempPath())
oExcel:OpenApp()
oExcel:Close()

FormatCondTempo

:FormatCondTempo(cRefDe,cRefAte,nEstilo,cPeriodo)
Cria uma regra de formatação condicional por período temporal dinâmico (timePeriod), sempre relativo à data atual

Parâmetros

Parâmetro Tipo Descrição Obrigatório Obs
cRefDe caractere Referência inicial (ex: "G2") X
cRefAte caractere Referência final (ex: "G7")
nEstilo numérico Posição do estilo criado pelo ADDdxf (veja acima) X
cPeriodo caractere today, yesterday, tomorrow, last7Days, thisWeek, lastWeek, nextWeek, thisMonth, lastMonth, nextMonth Default "today"

Retorno

Nulo

Exemplo

Local nCont
Local oExcel   := custom.excel.Xlsx():New(cNomeFile="TstYExcel",cTipo="A")
Local oCorPre3 := oExcel:Preenc("FFFF00")  //Fundo amarelo
Local oCorPre2 := oExcel:Preenc("00FF00")  //Fundo verde
Local nPosAmar := oExcel:ADDdxf(aCorPreenc=oCorPre3)
Local nPosVerd := oExcel:ADDdxf(aCorPreenc=oCorPre2)
oExcel:ADDPlan(cNome="FormatCondAvancada")
oExcel:Pos(1,7):SetValue("Data")
For nCont:=1 to 6
	oExcel:Pos(nCont+1,7):SetValue(Date()-(nCont-1)*3)
Next
oExcel:FormatCondTempo(cRefDe="G2",cRefAte="G7",nEstilo=nPosAmar,cPeriodo="today")    //Hoje em amarelo
oExcel:FormatCondTempo(cRefDe="G2",cRefAte="G7",nEstilo=nPosVerd,cPeriodo="thisWeek") //Esta semana em verde
oExcel:Save(GetTempPath())
oExcel:OpenApp()
oExcel:Close()

Obs

A fórmula gerada usa a célula inicial (cRefDe) como âncora, no mesmo padrão criado pelo próprio Excel ao aplicar "Data de ocorrência" pela interface. Período inválido gera UserException.


Clone this wiki locally