鱼C论坛

 找回密码
 立即注册
查看: 2169|回复: 2

求python代码,已知Excel密码,批量打开带密码工作簿并另存替换原文件

[复制链接]
发表于 2023-5-23 15:29:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def xls_save_as_xlsx(data_path):
    for dirpath,dirname,filenames in os.walk(data_path):     #  os.walk()遍历文件
        for fname in filenames:
            file_name=os.path.join(dirpath,fname)    #  os.path.join()合并路径
            folder,name=os.path.splitext(file_name)    #  分解扩展名
            if file_name.endswith('.xls'):
                df=pd.read_excel(file_name)    #  pandas读xls文件
                df.to_excel(f"{folder}.xlsx",index=False)     #  pandas写入xlsx
                print(f'{file_name} 转换成功啦!O(∩_∩)O哈哈~')
                os.remove(file_name)   #  删除原xls文件(如果需要两种格式同时存在删除此代码
#print('更改格式完成')
data_path=r"C:\Users\EDY\Desktop\文件"     #  文件路径
xls_save_as_xlsx(data_path)      #  调用一下,转换完成
#print('------0、xls已更改为xlsx格式')


以上是我自己写的没有密码工作簿,批量打开多个工作簿并改为xlsx格式,保存替换原文件,有密码的代码怎么写?,如果我代码复杂、看不懂等可以按照你的逻辑重新写代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-23 15:33:35 | 显示全部楼层
如果你想用python处理密码保护的Excel文件,你可以使用 openpyxl 库,该库可以处理 .xlsx 文件。由于pandas不直接支持读取密码保护的Excel文件,因此我们需要稍作修改。这是一个示例代码:
import os
from openpyxl import load_workbook

def unlock_excel_files(data_path, password):
    for dirpath, dirname, filenames in os.walk(data_path):
        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            if file_path.endswith('.xlsx'):
                wb = load_workbook(filename=file_path, read_only=False, keep_vba=True, data_only=True, keep_links=False, password=password)
                wb.save(file_path)
                print(f'文件 {file_path} 已成功解锁并保存。')

data_path = r"C:\Users\EDY\Desktop\文件"  # 文件路径
password = "你的密码"  # Excel文件的密码
unlock_excel_files(data_path, password)

在这个例子中,我们使用 os.walk 函数遍历指定目录中的所有文件,并使用 endswith('.xlsx') 方法过滤出.xlsx文件。然后,我们使用 openpyxl.load_workbook 函数打开每个Excel文件,并提供密码参数以解锁密码保护的工作簿。最后,我们使用 workbook.save 方法将修改保存到原始文件中。

注意: openpyxl 不支持旧的 .xls 文件格式,因此这个脚本只能用于 .xlsx 文件。如果你有 .xls 文件,你需要先将它们转换为 .xlsx 格式。你可以使用如 xlrd 和 xlwt 等库进行转换,但是这些库不支持密码保护的Excel文件,所以这需要在没有密码保护的情况下进行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-23 16:14:57 | 显示全部楼层
isdkz 发表于 2023-5-23 15:33
如果你想用python处理密码保护的Excel文件,你可以使用 openpyxl 库,该库可以处理 .xlsx 文件。由于pandas ...

PS C:\Users\EDY\Desktop\python> & C:/Users/EDY/AppData/Local/Programs/Python/Python311/python.exe "c:/Users/EDY/Desktop/python/解密工作簿 copy.py"
PS C:\Users\EDY\Desktop\python> & C:/Users/EDY/AppData/Local/Programs/Python/Python311/python.exe "c:/Users/EDY/Desktop/python/解密工作簿 copy.py"
Traceback (most recent call last):
  File "c:\Users\EDY\Desktop\python\解密工作簿 copy.py", line 15, in <module>
    unlock_excel_files(data_path, password)
  File "c:\Users\EDY\Desktop\python\解密工作簿 copy.py", line 9, in unlock_excel_files
    wb = load_workbook(filename=file_path, read_only=False, keep_vba=True, data_only=True, keep_links=False, password=password)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: load_workbook() got an unexpected keyword argument 'password'
PS C:\Users\EDY\Desktop\python>



工作簿打开另存为xlsx格式了,添加完密码,运行报错了,以上为报错内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 03:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表