在Linux上使用Python处理受密码保护的Excel表格

8
问题很简单。每周我会收到一堆密码保护的Excel文件。我需要使用Python解析它们,并将某些部分写入新文件。我已经拥有了这些文件的密码。
在Windows上,当我可以导入win32com并使用client.Dispatch时,这很容易处理。但是现在我们正在将所有代码移动到Linux上,所以对我来说没有win32com了。
是否有一种方法可以在Linux上使用Python打开和读取受密码保护的Excel表格中的数据?
我一直在寻找打开密码保护的Excel文件的简单方法,但没有运气。我还尝试找到一种方法,只需删除密码保护,就可以像在未受密码保护的文件上一样使用xlrd,但也没有运气。
任何帮助都将不胜感激。

这看起来对你可能有用https://dev59.com/smIk5IYBdhLWcg3wPcCB - perfectvid2012
1
@perfectvid2012:不,它并不需要。整个重点是要找到一种不使用win32com(或任何其他特定于Windows的东西)的解决方案。 - John Y
嗯?现在我有点困惑了。 - Jacobr365
我没有任何恢复删除内容的选项。我所看到的只有一个被标记为答案的回答。 - Jacobr365
1个回答

6

使用 libreofficeunoconv

unoconv --password='p4ssw0rd' -f csv  protectedFile.xls

然后解析csv文件。如果需要格式或者想折磨自己,可以导出到另一个xls文件。
注:在接受后进行了编辑(如@enharmonic所指出的那样,正确的开关是--password而不是-p)。
我最近使用xlsxunpass更容易了。
java -jar ./xlsxunpass.jar protected.xlsx unprotected.xlsx 'p4ssw0rd'

如果我的 .xlsx 文件有多个工作表呢? - Máxima Alekz
尝试将文件写入支持表格的另一种格式。例如:unoconv -p p4ssw0rd -f xlsx protectedFile.xls - Will
是否出现了“无法运行(带有错误)”的问题?或者文件仍然受密码保护?如果您已经拥有xlsx文件,请尝试转换为xls格式:unoconv -p p4ssw0rd -f xls protectedFile.xlsx 或者ods格式:unoconv -p p4ssw0rd -f ods protectedFile.xlsx - Will
我遇到了这个错误:“错误:无法连接或启动自己的监听器。中止。” 你有什么想法吗? - Raj
@Raj,我认为“-p”选项不是用于密码的;文档中说它是用于指定端口的。“-p,--port要监听的端口(作为侦听器)或要连接到的端口(作为客户端)。默认端口是'2002'。”https://linux.die.net/man/1/unoconv - enharmonic
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接