如何通过Python的xlsxwriter包为xlsx文件设置密码?
如何用XlsxWriter为XLSX文件设置密码?
Hey there! 先直接给你说清楚:XlsxWriter本身并不支持为生成的XLSX文件设置密码保护,这是这个库的已知局限,官方文档里也明确说明了这一点——它专注于文件内容的生成,没有内置加密功能。
既然你不想用openpyxl,这里有两个简单的替代方案,都是先通过XlsxWriter生成无密码文件,再用其他工具给文件加密:
方案1:Windows环境下调用Excel COM接口(依赖本地安装的Excel)
如果你是在Windows系统上,且电脑里装了Microsoft Excel,可以用win32com.client调用Excel的后台功能给文件加密,代码示例如下:
import xlsxwriter import win32com.client as win32 import os # 第一步:用XlsxWriter生成普通xlsx文件 workbook = xlsxwriter.Workbook('unprotected.xlsx') worksheet = workbook.add_worksheet() worksheet.write('A1', '这是需要保护的内容') workbook.close() # 第二步:调用Excel给文件设置密码 excel_app = win32.Dispatch('Excel.Application') excel_app.Visible = False # 让Excel在后台运行,不弹出窗口 workbook = excel_app.Workbooks.Open(os.path.abspath('unprotected.xlsx')) workbook.Password = 'your_secure_password' # 替换成你的密码 workbook.Save() workbook.Close() excel_app.Quit()
方案2:跨平台使用msoffcrypto-tool(无需依赖Excel)
如果需要跨平台(Linux/macOS/Windows),可以用msoffcrypto-tool这个专门处理Office文件加密的轻量库,先安装它:
pip install msoffcrypto-tool
然后用下面的代码完成生成+加密的流程:
import xlsxwriter from msoffcrypto import OfficeFile import os # 第一步:生成无密码的临时文件 workbook = xlsxwriter.Workbook('temp.xlsx') worksheet = workbook.add_worksheet() worksheet.write('A1', '敏感数据') workbook.close() # 第二步:给文件加密 with open('temp.xlsx', 'rb') as input_file: office_file = OfficeFile(input_file) office_file.load_key(password='your_password_here') # 设置密码 with open('protected.xlsx', 'wb') as output_file: office_file.encrypt(output_file) # 可选:删除临时文件 os.remove('temp.xlsx')
这两个方案都不需要用到openpyxl,操作起来也比较简单,你可以根据自己的运行环境选择合适的方式~
内容的提问来源于stack exchange,提问作者Brady Huang
相关产品推荐
相关产品推荐

