pandas 如何密码保护Excel文件,但允许在Python中只读?

zwghvu4y  于 2023-11-15  发布在  Python
关注(0)|答案(3)|浏览(177)

我正在使用python进行自动化,我已经创建了一个只读的excel文件,但是否有可能使其密码保护写入?
我已经走了这么远

with pd.ExcelWriter("asd.xlsx", engine="xlsxwriter") as excel_writer:
    df4.to_excel(excel_writer, index=False, sheet_name="Sheet1")
    excel_writer.book.read_only_recommended()

字符串

gijlo24d

gijlo24d1#

您可以通过Aspose.Cells for Python通过Java轻松完成此任务。请参阅以下示例代码,该代码将使Excel文件具有密码写保护,供您参考。例如:示例代码:

import jpype
import asposecells
jpype.startJVM()
from asposecells.api import Workbook

# Load the MS Excel file.
workbook = Workbook("asd.xlsx")
    

# Write protect workbook with password.
workbook.getSettings().getWriteProtection().setPassword("1234");

# Specify author while write protecting workbook.
workbook.getSettings().getWriteProtection().setAuthor("testauthor1");

# Save the write-protected Excel file.
workbook.save("out_protected-asd.xlsx")

字符串
当您手动将输出文件打开到MS Excel中时,系统会提示您指定写保护密码。如果您想更改/更新文件中的内容,请给予正确的密码。否则,您可以以只读方式打开文件。
您也可以在专用的forums中发布您的查询或评论。
PS.我在Aspose担任支持开发人员/布道者。

hujrc8aj

hujrc8aj2#

有无数种方法可以完成这个任务。这个答案有几个假设.
例如,您是否希望仅使用Pandas库来完成密码保护?如果是这样,那么这是不可能的(reference source),或者如果使用另一个库来修改工作簿或工作表就足够了。我假设后者。
一些潜在的解决方案是使用Aspose.Cells library向工作簿添加密码保护。

ASPOSE保护类型:

  • ALL -用户不能修改任何内容。
  • 内容-用户无法输入数据。
  • 错误-用户无法修改图形对象。
  • 场景-用户无法修改保存的场景。
  • 结构-用户不能修改保存的结构。
  • WINDOWS -用户无法修改保存的窗口。
  • 无-无保护。
#Libraries
import jpype
import asposecells
import pandas as pd

jpype.startJVM()
from asposecells.api import Workbook, ProtectionType

#Load Excel File
workbook = Workbook("asd.xlsx")
    
#Add password protection
workbook.protect(ProtectionType.STRUCTURE, "password")

#Save the protected excel file
workbook.save("protected-asd.xlsx")

#Continue with Pandas dataframe here using the protected file...
with pd.ExcelWriter("protected-asd.xlsx", engine="xlsxwriter") as excel_writer:
df4.to_excel(excel_writer, index=False, sheet_name="Sheet1")

字符串

qxgroojn

qxgroojn3#

你需要使用Python通过密码打开它,如下所示:

import io
import openpyxl
import msoffcrypto

decryptedWorkbook = io.BytesIO()

with open('yourFile.xlsx', 'rb') as file:
    excelFile = msoffcrypto.OfficeFile(file)
    excelFile.load_key(password='your password')
    excelFile.decrypt(decryptedWorkbook)

myWorkbook = openpyxl.load_workbook(filename=decryptedWorkbook)

字符串

相关问题