Gerando um arquivo do Excel através da DlgToExcel – Maratona AdvPL e TL++ 146

Nesse vídeo demonstraremos a utilização da função DlgToExcel, que serve para pegar algumas informações e gerar um arquivo e abrindo via Excel.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"
#Include "TopConn.ch"

/*/{Protheus.doc} User Function zExe146
Função que gera um arquivo do Excel (csv) através de informações vindas por parâmetros
@type Function
@author Atilio
@since 16/12/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=39682606
@obs 
    Função DlgToExcel
    Parâmetros
        + aExport     , Array       , Dados que serão exportados separados em 1 = Tipo; 2 = Título; 3 = Cabeçalho dos Campos; 4 = Dados
    Retorno
        Função não tem retorno

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe146()
    Local aArea      := FWGetArea()
    Local aCabec     := {}
    Local aDados     := {}
    Local aCampos    := {}
    Local aHeader    := {}
    Local aCols      := {}
    Local cQryAux    := ""
    
    //Exemplo #1 - Exporta um Array
    aCabec := {"Nome", "Data Nascimento", "Cidade"}
    
    aAdd(aDados, {"Daniel", sToD("19930712"), "Bauru"})
    aAdd(aDados, {"Joao",   sToD("19910131"), "Agudos"})
    aAdd(aDados, {"Maria",  sToD("19921231"), "Piratininga"})

    DlgToExcel({ {"ARRAY", "Exportacao de dados de um Array", aCabec, aDados} })



    //Exemplo #2 - Exportar uma tabela
    aCampos := {}
    aAdd(aCampos, {"Grupo",     "BM_GRUPO"})
    aAdd(aCampos, {"Descricao", "BM_DESC"})

    DlgToExcel({ {"TABELA", "Exportacao de dados de uma Tabela", aCampos, "SBM"} })



    //Exemplo #3 - Exporta um GetDados (grid com aHeader e aCols)

    //             Título               Campo        Máscara         Tamanho                   Decimal     Valid    Usado  Tipo F3     Combo
    aAdd(aHeader, {"Código",            "B1_COD",    "",             TamSX3("B1_COD")[01],     0,          ".T.",   ".T.", "C", "",    ""} )
    aAdd(aHeader, {"Descrição",         "B1_DESC",   "",             TamSX3("B1_DESC")[01],    0,          ".T.",   ".T.", "C", "",    ""} )
    aAdd(aHeader, {"Tipo",              "B1_TIPO",   "",             TamSX3("B1_TIPO")[01],    0,          ".T.",   ".T.", "C", "",    ""} )
    aAdd(aHeader, {"Unidade Medida",    "B1_UM",     "",             TamSX3("B1_UM")[01],      0,          ".T.",   ".T.", "C", "",    ""} )

    //Busca os produtos
    cQryAux := " SELECT B1_COD, B1_DESC, B1_TIPO, B1_UM "+ CRLF
    cQryAux += " FROM " + RetSQLName("SB1") + " SB1 "+ CRLF
    cQryAux += " WHERE B1_FILIAL = '" + FWxFilial("SB1") + "' AND B1_MSBLQL != '1' AND SB1.D_E_L_E_T_ = ' ' "+ CRLF
    TCQuery cQryAux New Alias "QRY_AUX"

    //Percorre os dados e adiciona nos arrays
    While ! QRY_AUX->(EoF())
        aAdd(aCols, {;
            QRY_AUX->B1_COD,;  // Produto
            QRY_AUX->B1_DESC,; // Descrição
            QRY_AUX->B1_TIPO,; // Tipo
            QRY_AUX->B1_UM,;   // Unid. Med.
            .F.;               // Linha Excluida?
        })

        QRY_AUX->(DbSkip())
    EndDo
    QRY_AUX->(DbCloseArea())

    DlgToExcel({ {"GETDADOS", "Exportacao de dados de uma Grid", aHeader, aCols} })

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

Deixe uma resposta

Terminal de Informação