Execute Python no Calc através do sistema de macros do LibreOffice.

Se um script Python for executado a partir do seu terminal, mas não conseguir ler ou alterar a planilha aberta no Calc, provavelmente está sendo executado fora do LibreOffice. Uma macro Python do Calc precisa ser executada dentro do processo do LibreOffice, onde o LibreOffice fornece o contexto do documento ativo. Salve o script como um módulo na sua pasta de scripts Python do usuário, exporte sua função com `export` g_exportedScriptse execute-a a partir da caixa de diálogo de macros do Calc.

Este é o caminho mais simples para uma pequena automação vinculada à planilha aberta. A ajuda atual do LibreOffice para scripts Python descreve tanto macros integradas ao processo quanto scripts Python conectados separadamente; os passos abaixo utilizam o método integrado ao processo.

Por que um script Python comum não consegue acessar a planilha aberta?

O LibreOffice expõe o documento atual a uma macro Python em execução por meio da variável global `__name__` XSCRIPTCONTEXT. Um script executado com seu pythoncomando normal é um processo separado, portanto, essa variável global não está disponível automaticamente. Ele ainda pode se comunicar com o LibreOffice, mas isso requer o estabelecimento de uma conexão UNO com um processo do Office já em execução. Para uma primeira macro, execute a função dentro do LibreOffice.

Uma macro em Python é uma função dentro de um .pymódulo. A g_exportedScriptstupla do módulo informa ao LibreOffice quais funções devem ser exibidas na lista de macros. Esses detalhes estão documentados na referência de programação em Python do LibreOffice .

Como adicionar uma macro Python ao Calc?

1. Localize a pasta de scripts Python do usuário.

Use a pasta "Minhas Macros" se desejar um script que possa ser executado em qualquer documento do LibreOffice aberto em sua conta de usuário. O LibreOffice descreve a pasta como "Minhas Macros" %APPDATA%\LibreOffice\4\user\Scripts\pythonno Windows, " Minhas $HOME/.config/libreoffice/4/user/Scripts/pythonMacros" no Linux e "Minhas Macros" no macOS. Se as Scripts/pythonpastas ainda não existirem, crie-as. A referência de locais de script também explica os outros contêineres de macros: Macros de Aplicativo e macros incorporadas em um documento.

Um arquivo Python chamado hello_calc.py na pasta Scripts/python do usuário do LibreOffice.
Coloque o módulo de macro na pasta Scripts/python do usuário para que o LibreOffice possa listá-lo em "Minhas Macros".

As macros de documentos são armazenadas em um arquivo específico e só podem ser acessadas enquanto esse documento estiver aberto. Para um utilitário pessoal reutilizável, "Minhas Macros" geralmente é mais fácil de manter. Evite modificar a pasta de macros do LibreOffice, que é gerenciada por todo o aplicativo, pois isso pode exigir acesso de administrador.

2. Crie e exporte uma pequena função de teste.

Abra um editor de texto simples, crie hello_calc.pya pasta acima e adicione:

def hello_calc(*args):
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.Sheets[0]
    sheet.getCellRangeByName("A1").setString("Hello from Python")

g_exportedScripts = (hello_calc,)

A função obtém o documento atualmente conectado à chamada da macro, seleciona sua primeira planilha e escreve uma string de teste inofensiva em A1. A última linha é importante: sem a tupla exportada, a função pode não aparecer como uma macro executável. Salve o arquivo como texto simples com a .pyextensão .txt, não como um documento de texto formatado ou um arquivo com a extensão .txt .py.txt.

Código de macro Python usando XSCRIPTCONTEXT e listando hello_calc em g_exportedScripts
A função exportada usa XSCRIPTCONTEXT para acessar o documento aberto e escrever um valor de teste na célula A1.

O LibreOffice fornece XSCRIPTCONTEXTa variável para o módulo de macros. Ele não a passa automaticamente para os módulos importados pelo seu código, portanto, mantenha o primeiro teste independente. Se posteriormente você dividir funções reutilizáveis ​​em outros módulos, siga as orientações do LibreOffice para importação de módulos Python .

3. Abra um arquivo do Calc e execute a função exportada.

  1. Abra uma planilha de teste no Calc. Use uma cópia ou uma planilha em branco durante o desenvolvimento.
  2. Selecione Ferramentas > Macros > Executar Macro .
  3. Na lista de bibliotecas, expanda "Minhas Macros" , escolha o módulo Python e selecione hello_calcum dos nomes de macro.
  4. Clique em Executar .

A mesma função pode ser iniciada a partir da extensão APSO, que o LibreOffice recomenda para scripts Python em processo e também fornece um shell Python. Você não precisa do APSO para o fluxo básico de execução de macro descrito aqui.

Seletor de macros do LibreOffice com hello_calc destacado em "Minhas Macros" e o botão "Executar" visível.
Selecione a função hello_calc exportada em "Minhas Macros" e execute-a no Calc.
O LibreOffice Calc exibe "Olá do Python" na célula selecionada A1.
Um valor visível em A1 confirma que a macro de teste alcançou o documento do Calc e alterou uma célula.

E se a macro estiver ausente ou aparentemente não fizer nada?

Em vez de alterar configurações de segurança gerais, siga estas etapas de verificação:

  • O módulo não está listado: confirme se o arquivo está no Scripts/pythoncaminho de usuário correto, se possui um .pysufixo e se contém uma g_exportedScriptstupla com a grafia correta. Reabra a caixa de diálogo da macro; se o LibreOffice ainda não listar o arquivo recém-adicionado, feche e reinicie o LibreOffice e verifique novamente.
  • O nome da macro está faltando: certifique-se de que a tupla exportada inclua o objeto da função, por exemplo (hello_calc,). A vírgula transforma isso em uma tupla Python de um único item.
  • Nada aparece no terminal: a saída print()não está disponível quando macros do Python são executadas a partir da caixa de diálogo de macros padrão. O teste acima escreve em A1, portanto o resultado é visível na planilha. Para depuração interativa, o shell do APSO exibe a saída.
  • A importação falhou: instalar um pacote para o Python do seu sistema não garante que o ambiente de execução do Python do LibreOffice consiga importá-lo. O pacote precisa estar disponível no caminho do Python do ambiente de execução; as diretrizes oficiais de importação descrevem os caminhos de módulos de usuário e compartilhados. Comece testando a macro sem importações opcionais.
  • Aparece um aviso de segurança: execute apenas scripts que você escreveu ou revisou e nos quais confia. A segurança de macros existe para limitar códigos inseguros; não reduza o nível de segurança global apenas para executar a macro de um documento desconhecido. Consulte as opções de segurança de macros do LibreOffice se precisar entender o aviso.

Escolha a abordagem de processo externo somente quando sua automação precisar ser iniciada a partir de um terminal, agendador ou outro aplicativo. O LibreOffice exige que você inicie o processo do Office com um pipe ou socket e se conecte por meio de sua ponte UNO; um script independente comum não é equivalente a uma macro do Calc em execução no mesmo processo.

Como você pode verificar se a macro funcionou?

Após clicar em Executar, observe a célula A1 na primeira planilha. Ela deve conter "Olá do Python" e a barra de fórmulas deve exibir o mesmo texto quando A1 estiver selecionada. Se a célula permanecer inalterada, confirme se a pasta de trabalho desejada estava ativa e se a macro foi selecionada em "Minhas Macros". Assim que este teste mínimo for bem-sucedido, substitua o texto de teste pelo seu cálculo real e teste-o em uma cópia da pasta de trabalho antes de usá-lo com dados importantes.

Deixar um comentário

Proteja o texto selecionado do redator com uma senha de seção.

Proteja o texto selecionado do redator com uma senha de seção.

Bloqueie uma passagem específica contra edições de rotina, mantendo o restante do documento do Writer utilizável, e aprenda quando a criptografia de arquivos é a melhor opção.

Como tornar o texto da planilha legível no modo escuro do LibreOffice Calc

Como tornar o texto da planilha legível no modo escuro do LibreOffice Calc

Corrija textos difíceis de visualizar em planilhas verificando o tema, a cor da fonte das células, os preenchimentos e a formatação condicional no Calc.

O LibreOffice Calc exibe fórmulas como texto? Restaure os resultados.

O LibreOffice Calc exibe fórmulas como texto? Restaure os resultados.

Descubra por que o Calc exibe o texto da fórmula em vez dos valores calculados e corrija problemas como o modo de exibição, células formatadas como texto, apóstrofos ou resultados desatualizados.

Mesclar letras do Writer com um logotipo e campos de planilha

Mesclar letras do Writer com um logotipo e campos de planilha

Crie uma mala direta reutilizável no Writer com dados de destinatários do Calc e uma imagem incorporada compartilhada. Em seguida, visualize e salve as cartas personalizadas.

Limitar diagnósticos opcionais e atualizar dados no LibreOffice

Limitar diagnósticos opcionais e atualizar dados no LibreOffice

Desative as estatísticas de atualização opcionais e os avisos de relatório de falhas do LibreOffice e, em seguida, verifique o que as configurações abrangem e como verificá-las.

Use expressões regulares no LibreOffice Writer para editar textos em lote.

Use expressões regulares no LibreOffice Writer para editar textos em lote.

Ajuste o espaçamento, encontre texto estruturado e reorganize nomes com padrões de expressões regulares do Writer que você pode visualizar antes de substituir.

Configure os parágrafos em árabe e hebraico para leitura da direita para a esquerda no Writer.

Configure os parágrafos em árabe e hebraico para leitura da direita para a esquerda no Writer.

Ative os controles bidirecionais do Writer, defina o fluxo de parágrafos da direita para a esquerda (RTL) e verifique textos mistos em árabe ou hebraico sem interromper palavras e números em inglês.

Restaurar fontes Calibri e Arial no LibreOffice sem complicações

Restaurar fontes Calibri e Arial no LibreOffice sem complicações

Instale fontes Linux compatíveis com o sistema métrico ou mapeie as fontes alternativas do LibreOffice, levando em consideração as diferenças de licenciamento e layout das fontes da Microsoft.

Crie PDFs preenchíveis a partir de formulários no LibreOffice Writer.

Crie PDFs preenchíveis a partir de formulários no LibreOffice Writer.

Adicione campos de texto, caixas de seleção e listas suspensas utilizáveis ​​no Writer e, em seguida, exporte um PDF que os destinatários possam preencher e salvar.

Crie PDFs do LibreOffice mantendo as fontes que você usou.

Crie PDFs do LibreOffice mantendo as fontes que você usou.

Corrija fontes ausentes ou substituídas em PDFs do LibreOffice Writer, escolha o perfil de exportação correto e verifique quais fontes estão incorporadas antes de compartilhar.