我可以使用以下命令打开受密码保护的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数据帧。我需要一个接一个地全部读取单元格,还是有一种方便的方法来实现这一点?
从大卫哈曼的网站(所有学分归他) https://davidhamann.de/2018/02/21/read-password-protected-excel-files-into-pandas-dataframe/
使用xlwings,打开文件将首先启动Excel应用程序,以便您可以输入密码。
假设您可以使用win32com API将加密文件保存回磁盘(我意识到这可能达不到目的),那么您可以立即调用顶级pandas函数
read_excel
。不过,您需要首先安装xlrd
(对于Excel 2003)、xlwt
(对于2003)和openpyxl
(对于Excel 2007)的组合。Here是用于读取Excel文件的文档。目前,pandas不支持使用win32com API读取Excel文件。如果你愿意的话,欢迎你来open up a GitHub issue。假设起始单元格被指定为(StartRow,StartCol)而结束单元格被指定为(EndRow,EndCol),我发现以下操作对我有效:
注意:Excel单元格B5在win32com中作为第5行第2列给出。另外,我们需要list(…)将元组的元组转换为元组的列表,因为元组的元组没有pandas.DataFrame构造函数。
相关问题 更多 >
编程相关推荐