1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida Abrir planilha com LibreOffice

Discussão em 'Progress 4GL' iniciado por Schwanck_v, Março 8, 2024.

  1. Schwanck_v

    Schwanck_v Sem Pontuação

    Olá pessoal! Busquei em alguns tópicos aqui no site alguns exemplos de como abrir uma planilha com libre office mas não consegui resolver. Estou exportando primeiro para um .csv e depois tentado abrir esse arquivo com o LibreOffice Mas aparece um erro.

    Erro
    ---------------------------
    Ocorreu erro durante acesso a componente da propriedade/metodo: storeToURL.
    com.sun.star.io.IOException: SfxBaseModel::impl_store <file://c:/temp/testdoc.csv> failed: 0x81a(Error Area:Io Class:parameter Code:26) at C:/cygwin64/home/buildslave/source/libo-core/sfx2/source/doc/sfxbasemodel.cxx:3272 at C:/cygwin64/home/buildslave/source/libo-core/sfx2/source/doc/sfxbasemodel.cxx:1822
    Error code: 0x80020009 pi-gera-libreOffice c:\temp\p88369_converte_libre.cmp (5890)




    Código:
    def var BrOffice as com-handle.
    def var Desktop as com-handle.
    def var Planilha as com-handle.
    def var Documento as com-handle.
    def var cc as raw.
    
    run pi-gera-csv.
    run pi-gera-libreOffice.
    
    /*--------------------------------------------------------------------------------*/
    procedure pi-gera-csv.
        output to value('c:/temp/testdoc.csv') no-convert.
    
            put unformatted
                'a' ';'
                'b' ';'
                'c' ';'
                'd' ';'
                'e' ';'
                'f' ';'
                'g' ';'
                'h' ';'.
    
        output close.
    end procedure.
    
    /*--------------------------------------------------------------------------------*/
    procedure pi-gera-libreOffice:
    
        create "com.sun.star.ServiceManager" BrOffice.  
    
        Desktop = BrOffice:createinstance("com.sun.star.frame.Desktop").  
    
        /* Inicia um documento em branco */  
        Documento = Desktop:loadComponentFromURL("private:factory/scalc","_blank",0,cc).  
    
        /* Remove Planilhas padrao */
        do while Documento:getSheets:getCount > 1:
           Planilha = Documento:getSheets:getByIndex(1).
           Documento:getSheets:removeByName( Planilha:name ).
        end.
      
        assign Planilha = Documento:getSheets:getByIndex(0).
               Planilha:name = "Teste".
    
        /* Definindo formato numerico para coluna */
        Planilha:getColumns:getByIndex(1):setPropertyValue("NumberFormat", 1).
      
        /* Ajuste automatico da largura das colunas */
        Planilha:getColumns:OptimalWidth = yes.
      
        Documento:storeToURL('file://c:/temp/testdoc.csv', CC).
      
        /* Finaliza BrOffice
        Documento:dispose().
        Desktop:terminate(). */
      
        release object Documento.
        release object Planilha.
        release object Desktop.
        release object BrOffice.
    
    end procedure.
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Segundo o ChatGPT o método correto para abrir um documento é LoadComponentFromURL

    É assim que funciona no c#, e como bibliotecas funcionam igual em diferentes linguagens, tente usar.

    Clique pra ver a resposta completa:
    upload_2024-3-8_14-51-26.png
    Schwanck_v curtiu isso.

Compartilhe esta Página