Como faço para que os titulos das células sejam impressas na posição vertical (em pé), ao invés de horizontal (padrão) ?
Como faço para que os titulos das células sejam impressas na posição vertical (em pé), ao invés de horizontal (padrão) ?
Isamu,
A classe FWMsExcelEx
não suporta isso, como o Felipe já citou.
Foram criadas classes que permitem gerar um XLSX, entre elas existe a classe FwPrinterXlsx
, que possui método de fundir as células e de formatação, utilizando dessa classe é possível exibir as quebras de linha de uma célula, usando então essa classe e as demais classes auxiliares da criação de planilhas XLSX, você consegue fazer algo assim, pode não ser exatamente o que você espera, mas o conteúdo fica na vertical.
Veja um exemplo:
//-------------------------------------------------------------------
/*/{Protheus.doc} xlsxVerticalTitle
Exemplo de criação de título na vertical em planilhas xlsx
@author Daniel Mendes
@since 16/06/2021
@version 1.0
/*/
//-------------------------------------------------------------------
user function xlsxVerticalTitle()
local oXlsx as object
local cCRLF as char
local oHorizontal as object
local oVertical as object
local jFormat
cCRLF := CRLF //Quebra de linha, para evitar chamar diversas vezes (performance)
oXlsx := FwPrinterXlsx():new(.T.) //Crio a instância com parâmetro para apagar o arquivo .rel após a geração do xlsx
oHorizontal := FwXlsxCellAlignment():horizontal() //Instância da formatação horizontal
oVertical := FwXlsxCellAlignment():vertical() //Instância da formatação vertical
//Crio uma formatação para ficar com alinhamento no centro, vertical e horizontal e habilito a quebra de linha
jFormat := FwXlsxPrinterConfig():MakeFormat() //Formatação padrão
jFormat["text_wrap"] := .T. //Quebra de linha
jFormat["vert_align"] := oVertical:center() //Alinhamento vertical no centro
jFormat["hor_align"] := oHorizontal:center() //Alinhamento horizontal no centro
oXlsx:activate("\xisto.rel") //Ativo a classe com o nome que será o arquivo, inicialmente como .ret, o método toXlsx transforma o mesmo em xlsx
oXlsx:addSheet("Xpto") //Adiciona uma aba
oXlsx:SetCellsFormatConfig(jFormat) //Adiciono a formatação criada anteriormente
oXlsx:mergeCells(1, 1, 6, 1) //Faço o merge das linhas para ter o tamanho do título na vertical
//Título
oXlsx:setText(1, 1, "X" + cCRLF + "I" + cCRLF + "S" + cCRLF + "T" + cCRLF + "O") //Adiciono o título na vertical de forma manual, ou seja, cada letra em uma linha
//Conteúdo
oXlsx:setText(8, 1, "Xisto") //Demais conteúdo da planilha
oXlsx:setText(9, 1, "Xpto") //Demais conteúdo da planilha
oXlsx:toXlsx() //Gero o arquivo xlsx
oXlsx:deActivate() //Desativo a classe
oXlsx:destroy() //Destruo da classe
freeObj(oXlsx) //Libero a memória
return
Documentações de geração de planilhas: https://tdn.totvs.com/pages/viewpage.action?pageId=560647734
GRato, Daniel. Vou testar sua solução. Muito obrigado pela ajuda.
— Isamu 16 de Mar de 2021Boa tarde Isamu,
A classe não possui essa opção.
Documentação: https://tdn.totvs.com/display/framework/FWMsExcelEx
Agradeço seu retorno.
— Isamu 16 de Mar de 2021