从密码保护的Excel文件到pandas数据框
我可以用这个打开密码保护的Excel文件:
import sys import win32com.client xlApp = win32com.client.Dispatch("Excel.Application") print "Excel library version:", xlApp.Version filename, password = sys.argv[1:3] xlwb = xlApp.Workbooks.Open(filename, Password=password) # xlwb = xlApp.Workbooks.Open(filename) xlws = xlwb.Sheets(1) # counts from 1, not from 0 print xlws.Name print xlws.Cells(1, 1) # that's A1
我不确定如何将信息传输到pandas数据框。 我是否需要一个一个地阅读单元格,还是有一个方便的方法来实现?
假设起始单元格为(StartRow,StartCol),结束单元格为(EndRow,EndCol),我发现以下工作:
# Get the content in the rectangular selection region # content is a tuple of tuples content = xlws.Range(xlws.Cells(StartRow, StartCol), xlws.Cells(EndRow, EndCol)).Value # Transfer content to pandas dataframe dataframe = pandas.DataFrame(list(content))
注意:Excel单元格B5在win32com中作为第5行第2列给出。 此外,我们需要list(…)将元组元组转换为元组列表,因为元组元组没有pandas.DataFrame构造函数。
假设您可以使用win32com API将encryption的文件保存回磁盘(我认识到可能会破坏目的),您可以立即调用顶层pandas函数read_excel
。 您需要首先安装xlrd
(用于Excel 2003), xlwt
(也用于2003)和openpyxl
(用于Excel 2007)的组合。 这里是在Excel文件中阅读的文档。 目前pandas不提供使用win32com API来读取Excel文件的支持。 如果您愿意,欢迎您打开GitHub问题 。