TReport/TRSection geração de abas em planilhas excel

Olá. Gostaria de gerar uma aba para cada TRSection quando a impressão é modo planilha. Quando a impressão é modo PDF, não estou conseguindo mostrar o título da sessão. No caso do excel, hoje é gerada uma aba com o nome "99-01 - Parâmetros WMS" por causa da definição

oReport:= TReport():New("WMSXR000","Parâmetros WMS","WMSXR000", {|oReport| ReportPrint(oReport)},"Parâmetros WMS")

Segue um trecho do ReportDef e do ReportPrint:

Static Function ReportDef()

oSection := TRSection():New(oReport,"WMS Geral",{"SX6"})

TRCell():New(oSection,'X6_VAR' ,MPSysSqlName("SX6"),"Parâmetro",,10)

TRCell():New(oSection,'X6_TIPO' ,MPSysSqlName("SX6"),"Tipo" ,,1)

oSection2 := TRSection():New(oReport,"Radio Frequencia",{MPSysSqlName("SX6")})

TRCell():New(oSection2,'X6_VAR' ,MPSysSqlName("SX6"),"Parâmetro" ,,10)

TRCell():New(oSection2,'X6_TIPO' ,MPSysSqlName("SX6"),"Tipo" ,,1)

//----------------------------------------------

Static Function ReportPrint(oReport)

oSection:BeginQuery()

BeginSQL Alias cAliasQry1

SELECT X6_VAR,X6_TIPO, X6_DESCRIC,X6_DESC1,X6_CONTEUD

FROM %temp-table:cTabela%

WHERE X6_VAR IN ('MV_INTDL')

EndSQL

oSection:EndQuery()

oSection:Print()

oSection:Finish()

oSection2:BeginQuery()

BeginSQL Alias cAliasQry2

SELECT X6_VAR,X6_TIPO, X6_DESCRIC,X6_DESC1,X6_CONTEUD

FROM %temp-table:cTabela%

WHERE X6_VAR IN ('MV_WMSRDST')

EndSQL

oSection2:EndQuery()

oSection2:Print()

oSection2:Finish()

//----------------------------------------------

Se puderem ajudar, por favor Obrigado

Uma das opções que você pode fazer é usar a classe FwMsExcelXlsx

Aqui a documentação da função

Basicamente, você precisaria adicionar uma nova aba usando o método AddworkSheet

Em uma das implementações que usei essa classe, tive a quebra da query por 2 arrays, acrescentei esses arrays em 2 abas diferentes.

oFWMsExcel := FWMsExcel():New()

if len(aVencer) > 0 oFWMsExcel:AddworkSheet(cFVencer) oFWMsExcel:AddTable(cFVencer, cTabela)

For nI := 1 To len(aCabec) oFWMsExcel:AddColumn(cFVencer, cTabela, aCabec[nI,1]) Next nI

For nI := 1 to len(aVencer) oFWMsExcel:AddRow(cFVencer, cTabela, {aVencer[nI,1],; aVencer[nI,2],; aVencer[nI,3],; aVencer[nI,4],; aVencer[nI,5],; aVencer[nI,6],; aVencer[nI,7]; }) next nI

endif

if len(aVencido) > 0 oFWMsExcel:AddworkSheet(cFVencida) oFWMsExcel:AddTable(cFVencida, cTabela)

For nI := 1 To len(aCabec) oFWMsExcel:AddColumn(cFVencida, cTabela, aCabec[nI,1]) Next nI

For nI := 1 to len(aVencido) oFWMsExcel:AddRow(cFVencida, cTabela, {aVencido[nI,1],; aVencido[nI,2],; aVencido[nI,3],; aVencido[nI,4],; aVencido[nI,5],; aVencido[nI,6],; aVencido[nI,7]; }) next nI

endif

Ficou meio ruim a indentação aqui pelo fórum, mas, a ideia é mostrar que fiz a quebra e adicionei em 2 abas (worksheet) diferentes.

Talvez você precise ajustar o seu fonte para PDF e para Xls, mas, pode ser uma opção.

Realize testes e retorne aqui para nós como você fechou para auxílio para outras pessoas também.