saulogm / advpl-excel

Classe em ADVPL para criar, ler ou editar planilhas do excel no formato xlsx
https://github.com/saulogm/advpl-excel/wiki
Apache License 2.0
47 stars 23 forks source link

Borda em celular com merge #24

Open AlexandreBeh opened 3 months ago

AlexandreBeh commented 3 months ago

Olá, parabéns pela excelente biblioteca.

As células que sofrem merge não estão respeitando a borda ALL, testei aplicando borda antes e depois de fazer merge, mas o arquivo só fica com borda na primeira célula. No sheets1 não esta gerando registro dessas celulas. Mas imagino que deveria gerar com conteúdo vazio apenas indicando o style pela tag s igual a celular que vai receber o conteúdo. Exemplo sem borda `

        </c>
        <c r="G25" s="10" t="inlineStr">
            <is>
                <t xml:space="preserve">
                    <![CDATA[85364100  ]]>
                </t>
            </is>
        </c>`

Marcando a borda manual e salvando `

36
        </c>
        <c r="D25" s="17"/>
        <c r="E25" s="17"/>
        <c r="F25" s="17"/>
        <c r="G25" s="14" t="s">
            <v>37</v>
        </c>`

O programa altera a estrutura, mas gera os registros das celulas.

estou usando assim nBordaAll := oExcel:Borda("ALL") oStyleItemTabela := oExcel:NewStyle():Setborder(nBordaAll)

saulogm commented 3 months ago

Realmente isso ocorre e não sei qual o melhor tratamento a ser feito nessa situação.

A melhor forma de fazer isso é manualmente. Exemplo:

For nCont:=1 to 2   //Até linha 2
    For nCont2:=1 to 6  //Até Coluna 6
        oExcel:Pos(nCont,nCont2):SetValue("TESTE EXCEL"):SetStyle(oPosStyle)
    Next
Next
oExcel:mergeCells(1,1,2,6)  //Mescla as células A1:F2

Isso porque o Microsoft Excel não aceita gravar o xml fora da ordem. Se eu gravar automaticamente os estilos nas próximas colunas dar beleza, mas nas próximas linhas, impossibilita de criar outra coluna depois da célula mesclada.