Como manipular arquivo "xlsm" usando Python 3

1,315 views
Skip to first unread message

Hugo Baur

unread,
Jan 10, 2017, 1:08:31 PM1/10/17
to Python Brasil

Prezados, boa tarde.

Estou com um problema no trabalho e não to conseguindo resolver.

Primeiro problema: Preciso ler alguns valores em um arquivo xls e colocar em lugares específicos em um arquivo xlsm diariamente.

  • Eu consigo ler os valores, porém não consigo escrever no arquivo xlsm. da um erro!

Segundo problema: Se eu alterar o xlsm pra xls eu não consigo colocar apenas os valores que preciso, ele faz uma cópia de todas as informação que tem no arquivo original.

Estou usando as bibliotecas xlrd xlwt


from xlrd import open_workbook
from xlwt import easyxf
from xlutils.copy import copy

rb = open_workbook('Y:/Operação/RDH/2017/01 Jan/RDH05JAN.xlsx')
sh = rb.sheet_by_index(0)
sh2 = rb.sheet_by_index(1)
sh3 = rb.sheet_by_index(2)
sh4 = rb.sheet_by_index(3)

wb = copy(rb)

ws = wb.get_sheet(0)
ws2 = wb.get_sheet(1)
ws3 = wb.get_sheet(2)
ws4 = wb.get_sheet(3)

print ("SUDESTE")
energia_armazenada_max_se = sh2.cell_value(rowx=6, colx=11)
print ("Valor: " + str(energia_armazenada_max_se))
ena_percent_mlt_se = format(sh2.cell_value(rowx=7, colx=7))
print ("Valor: " + str(ena_percent_mlt_se))
ena_total_mlt_se = format(sh2.cell_value(rowx=6, colx=7))

ws.write ( 1,0, 999999 )
ws.write ( 1, 1 , 999999 )

wb.save('Y:\TEMP\Hugo\Programação\Balanço Diário de Energia 2017.xls')



Welton Vaz

unread,
Jan 10, 2017, 4:55:29 PM1/10/17
to python...@googlegroups.com
Prezado amigo,

Tem algum tempo que não trabalho com Excel mais Python, mas, quando o arquivo tem macros vc tem
que ter permissões especiais para manipular o referido arquivo.

Eu uso para acessar o Excel o modulo: openpyxl que pode ser usando com o Pandas e Numpy






 Enviado com Mailtrack

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--

Welton Vaz de Souza
TWITTER: http://twitter.com/Weltonvaz
BLOG: http://ghandybh.blogspot.com/
FACEBOOK: https://www.facebook.com/weltonv
Cel: (31)9327-0823
***********************************************************

 °v° NÃO USE DROGAS,
/(_)\ USE GNU/LINUX
 ^ ^


 

Hugo Baur

unread,
Jan 11, 2017, 6:47:38 AM1/11/17
to Python Brasil
Welton, Obrigado pela dica amigo,

vou testar aqui e venho com a resposta.


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Rubem Figueredo

unread,
Nov 20, 2018, 8:56:41 AM11/20/18
to Python Brasil
Hugo, eu vi que você colocou esta mesma dúvida em vários lugares na Internet, inclusive em inglês. Posso dar uma sugestão? É um tanto esdrúxula e bem primitiva, mas como eu também não havia conseguido fazer também o mesmo que você gostaria, então eu partir, devido a necessidades na empresa, para uma solução primitiva até que eu encontrasse outra realmente mais definitiva. Eu fiz o seguinte: Usei a biblioteca Pandas mesmo e como trabalho com SAP, precisei (ainda preciso) pegar informações no SAP e jogar em uma planilha, cujo arquivo era xlsm, como não conseguia fazer isto então eu joguei tudo em um arquivo xlsx mesmo e deste para o arquivo final xlsm, mas de forma automática. Vc sabe..., usando 0 "= ..." pegando o que contém a célula de uma planilha de um arquivo para a célula de outra planilha (planilha final) de outro arquivo (arquivo final). Entendeu?
Foi a única alternativa que achei até agor. Assim eu uso sempre arquivos xlsx sendo aberto/fechados nos scripts em Python, mas o resultado é jogado deste xlsx para o xlsm.
Reply all
Reply to author
Forward
0 new messages