Gerando planilha excel

Discussão em 'EMS , HCM e Totvs 11' iniciado por Carlos Alberto Giusti, Setembro 6, 2023.

  1. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    uso assim:

    CREATE "excel.application" chexcelapplication.
    Estão todos com chexcelapplication.

    Nada que coloco dá certo. Diz que é somente leitura e não mostra dados na planilha. Mostra a planilha sem nada.
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    No código que tu mostrou não tá, é por isso que não funciona, tá deixando o excel.exe na memória
  3. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    Está assim:
    DEF var chexcelapplication AS com-handle.
    DEF var chworkbook AS com-handle.
    DEF var chworksheet AS com-handle.

    no inicio:

    CREATE "excel.application" chexcelapplication.
    chworkbook = chexcelapplication:workbooks:ADD.
    chworksheet = chexcelapplicAtion:sheets:ITEM(1).
    chworksheet:name="Ocorrencias".
    chExcelApplication:ActiveSheet:SaveAs(c-arquivo,,,,TRUE,FALSE) NO-ERROR.

    no fim:

    chExcelApplication:visible = FALSE.
    chExcelApplication:QUIT().

    RELEASE OBJECT chExcelApplication.
    RELEASE OBJECT chWorkbook.
    RELEASE OBJECT chWorksheet.
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Eu tive um caso desse, em que no servidor não matava nem a pau, faça o seguinte

    Declare isso em algum lugar
    Código:
    PROCEDURE GetWindowThreadProcessId EXTERNAL "user32.dll":
        DEFINE INPUT PARAMETER handleToExcel      AS LONG NO-UNDO.
        DEFINE OUTPUT PARAMETER processIdForExcel AS LONG NO-UNDO.
    END PROCEDURE.
    
    Depois do SaveAs, faça isso:
    Código:
    DEF VAR PID AS INTEGER.
    
    RUN GetWindowThreadProcessId(INPUT chExcelApplication:Hwnd, OUTPUT PID).
    
    MESSAGE PID VIEW-AS ALERT-BOX INFO BUTTONS OK. //vai mostrar na tela o PID, depois pode tirar essa mensagem
    
    OS-COMMAND SILENT VALUE("TASKKILL /F /T /PID " + STRING(PID)). //isso vai matar a tarefa do gerenciador, independente se salvou ou não
    
    Veja se isso vai te atender
  5. Carlos Alberto Giusti

    Carlos Alberto Giusti Membro Ativo

    Boa tarde. Fiz isso e não funcionou.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Funciona sim, tu fez algo de errado, ou seu servidor é Linux e tem que mudar o OS-COMAND

Compartilhe esta Página