Astray.R 发表于 2023-8-30 22:20:14

怎样读取加密的excel

import openpyxl
wb = openpyxl.load_workbook('asd.xlsx', read_only=True, keep_vba=True, data_only=True, keep_links=False, password='1122')
一直返回
TypeError                                 Traceback (most recent call last)
<ipython-input-1-aec8254904f1> in <module>
      2
      3 # 打开带有密码的工作簿
----> 4 wb = openpyxl.load_workbook('asd.xlsx', read_only=True, keep_vba=True, data_only=True, keep_links=False, password='1122')
      5
      6 # 遍历工作表

TypeError: load_workbook() got an unexpected keyword argument 'password'
这里想读取以下表,然后把整张表重新另存一次,因为里面的表有很多合并单元格和图片,所以不方便用pandas读取

isdkz 发表于 2023-8-30 22:20:40

在openpyxl库中,load_workbook()函数没有直接提供password参数来读取加密的Excel文件。要读取加密的Excel文件,可以尝试使用win32com库来实现。

首先,确保你已经安装了pywin32库,可以使用以下命令进行安装:
pip install pywin32


然后,可以使用以下代码来读取加密的Excel文件并将其另存为新文件:
import win32com.client as win32

# 创建Excel应用程序对象
excel_app = win32.gencache.EnsureDispatch('Excel.Application')

# 打开加密的Excel文件
workbook = excel_app.Workbooks.Open('asd.xlsx', Password='1122')

# 将整张表另存为新文件
workbook.SaveAs('new_file.xlsx')

# 关闭Excel应用程序
excel_app.Quit()


这段代码使用了win32com库中的Excel应用程序对象来打开加密的Excel文件,并使用Password参数提供密码。然后,使用SaveAs()方法将整张表另存为新文件。最后,关闭Excel应用程序。

请注意,使用win32com库需要在Windows操作系统上运行,并且需要安装Microsoft Excel软件。

歌者文明清理员 发表于 2023-8-30 22:28:10

你为什么不直接用解密后的excel呢

Astray.R 发表于 2023-8-30 22:30:45

isdkz 发表于 2023-8-30 22:20
在openpyxl库中,load_workbook()函数没有直接提供password参数来读取加密的Excel文件。要读取加密的Excel ...

---------------------------------------------------------------------------
com_error                                 Traceback (most recent call last)
<ipython-input-2-8a865c2ae754> in <module>
      5
      6 # 打开加密的Excel文件
----> 7 workbook = excel_app.Workbooks.Open('asd.xlsx', Password='1122')
      8
      9 # 将整张表另存为新文件

~\AppData\Local\Temp\gen_py\3.8\00020813-0000-0000-C000-000000000046x0x1x9\Workbooks.py in Open(self, Filename, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
   73                         , Editable=defaultNamedOptArg, Notify=defaultNamedOptArg, Converter=defaultNamedOptArg, AddToMru=defaultNamedOptArg, Local=defaultNamedOptArg
   74                         , CorruptLoad=defaultNamedOptArg):
---> 75                 ret = self._oleobj_.InvokeTypes(1923, LCID, 1, (13, 0), ((8, 1), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17)),Filename
   76                         , UpdateLinks, ReadOnly, Format, Password, WriteResPassword
   77                         , IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify

com_error: (-2147352567, '发生意外。', (0, 'Microsoft Excel', '抱歉,无法找到 asd.xlsx。是否可能被移动、重命名或删除?', 'xlmain11.chm', 0, -2146827284), None)还是不行呢

Astray.R 发表于 2023-8-30 22:33:44

歌者文明清理员 发表于 2023-8-30 22:28
你为什么不直接用解密后的excel呢

文件被一个网络系统锁了,{:10_243:}公司外打不开

sfqxx 发表于 2023-8-30 22:36:08

不知道

isdkz 发表于 2023-8-31 08:50:30

Astray.R 发表于 2023-8-30 22:33
文件被一个网络系统锁了,公司外打不开

怎样的网络系统锁?也就是说密码不是excel文件本身有的?

myqf123 发表于 2023-8-31 09:25:11

关注一下

alexxie 发表于 2023-8-31 09:27:38

学习下,但不懂

断弦冷訫 发表于 2023-8-31 11:18:46

看不懂我只能要个育碧{:10_277:}

lengyue869 发表于 2023-8-31 11:28:00

本帖最后由 lengyue869 于 2023-8-31 11:29 编辑

亿赛通?先用xlwings打开

Astray.R 发表于 2023-8-31 14:19:25

isdkz 发表于 2023-8-31 08:50
怎样的网络系统锁?也就是说密码不是excel文件本身有的?

公司所有的,只要是在公司保存的文件,都会被标记,外网打不开,显示乱码,不过一般我在外网想打开,就必须用python读取另存后才能打开,但是我现在这个excel偏偏自己给他设置了可密码,我试了下openpyxl的方法打开,但是显示load_workbook() got an unexpected keyword argument 'password',我应该已经把openpyxl更新到最新版了

琅琊王朝 发表于 2023-8-31 21:49:26

完全可以问问GPT啊

阿奇_o 发表于 2023-9-1 00:00:15

试试 xlwings

kerln888 发表于 2023-9-1 08:57:27

copy出来不就没锁了?
页: [1]
查看完整版本: 怎样读取加密的excel