Ler um Excel
A leitura de um Excel efectua-se com a mesma simplicidade com que se efectua a escrita. Para uma melhor exemplificação da potencialidade da interacção, este exemplo contém algumas diferenças em relação ao anterior. Assim, neste exemplo, o Excel não é tornado visível, ou seja, a aplicação executa mas a janela nunca é visível para o utilizador. Mesmo que o utilizador possua um documento Excel aberto, o documento lido pelo script nunca é tornado visível. No entanto, o comando de terminar a aplicação é executado e o Excel será fechado.
Nota: O comando de término da aplicação fará com que o Excel termine e feche todos os documentos abertos, mesmo que sejam documentos abertos pelo utilizador.
O script fica em espera caso a aplicação necessite de interacção por parte do utilizador, como por exemplo se o Excel questiona o utilizador se este pretende guardar alterações a um documento. Caso se pretenda que a aplicação não seja terminada, então o comando de término da aplicação não deve ser executado. Também neste exemplo, as referências a alguns objectos do documento Excel serão feitas pelo seu nome, ao contrário do que aconteceu no exemplo anterior onde essas referências eram efectuadas através dos seus indicies. Tal é possível porque o modelo suporta estas duas formas de referência para alguns dos objectos.
Eis o exemplo completo da leitura do documento Excel criado no exemplo acima. Este exemplo irá ler o documento e mostrará na shell os valores presentes no documento. De novo, o exemplo encontra-se comentado por forma a ser mais fácil acompanhar o código.
De novo, o exemplo começa por efectuar a ligação ao Excel e de seguida abre o documento.
# -*- coding: iso-8859-15 -*- from win32com.client import Dispatch # Efectuar ligação ao Excel xlApp = Dispatch("Excel.Application") # Abre o documento xlWbook = xlApp.Workbooks.Open('C:excel-python-pap.xls')
A folha é seleccionada através do seu nome, em detrimento da sua posição.
# Seleccionar a primeira folha de nome 'Exemplo' xlWbook.Sheets('Exemplo').Select() xlSheet = xlWbook.ActiveSheet
A leitura dos valores presentes nas células faz-se de forma bastante simples, sendo o seu valor mostrado na consola.
# Ler o cabeçalho print xlSheet.Cells(1,1).Value # Ler a versão print xlSheet.Cells(2,1).Value, xlSheet.Cells(2,2).Value # Ler as datas print xlSheet.Cells(3,1).Value, str(xlSheet.Cells(3,2).Value)[0:8] print xlSheet.Cells(4,1).Value, xlSheet.Cells(4,2).Value
Por fim, o documento é fechado sem guardar alterações e a ligação ao Excel é terminada.
# Fechar sem guardar alterações xlApp.ActiveWorkbook.Close(SaveChanges=0) # Terminar aplicação xlApp.Quit() # Limpar memória del xlApp
Após a execução do script a consola terá o seguinte aspecto:
Controlo Total
Os exemplos anteriores ilustram a simplicidade com que se interage com o Excel a partir de Python. Esta simplicidade está presente mesmo em tarefas menos comuns quando se automatizam operações de manipulação de documento como a leitura e escrita e informação. O exemplo seguinte ilustra como é possível imprimir informação de forma automática e, por brincadeira, interagir com o sintetizador de fala do sistema.
Nota: Este exemplo requer que o sistema possua o sintetizador de fala e uma impressora correctamente instalados. Em certas condições, o Excel questionará se pretende instalar o sintetizador de fala, pelo que é necessário responder afirmativamente de forma a ouvir a frase “Python rules!”
Como sempre, o exemplo começa por efectuar a ligação ao Excel e de seguida abre o documento.
# -*- coding: iso-8859-15 -*- from win32com.client import Dispatch # Efectuar ligação ao Excel xlApp = Dispatch("Excel.Application") xlApp.Visible = 1 # Abre o documento xlWbook = xlApp.Workbooks.Open('C:excel-python-pap.xls')
A folha é seleccionada por nome e não por índice.
# Seleccionar a folha de nome 'Exemplo' xlWbook.Sheets('Exemplo').Select() xlSheet = xlWbook.ActiveSheet
A selecção da área a utilizar na impressão é efectuada através das coordenadas da folha, seguindo-se o comando de impressão do conteúdo dessa área.
# Seleccionar a informação a imprimir xlSheet.PageSetup.PrintArea = "A1:B4" # Imprimir as células seleccionadas xlSheet.PrintOut()
De seguida é dada indicação para usar o motor de fala, uma funcionalidade um pouco menos comum.
# Falar xlApp.Speech.Speak("Python rules!")
Por fim, a ligação ao Excel é finalizada sem que o documento seja actualizado.
# Fechar sem guardar alterações xlApp.ActiveWorkbook.Close(SaveChanges=0) # Terminar aplicação xlApp.Quit() # Limpar memória del xlApp
Interacção com Outras Aplicações
Os exemplos deste artigo centram-se na interacção com o Excel, mas é possível interagir com outras aplicações, como é o caso do Word e do Outlook. Essas interacções ficam como exercício lúdico para o leitor.