使用 python-xlsxwriter 或 bash 打开受密码保护的 ods 文件

Posted

技术标签:

【中文标题】使用 python-xlsxwriter 或 bash 打开受密码保护的 ods 文件【英文标题】:Open password-protected ods file with python-xlswriter or bash 【发布时间】:2019-11-05 06:44:54 【问题描述】:

我需要一个代码来通过 python3(首选)或 bash 打开电子表格,我给他们密码并阅读它们。

我尝试通过 python-module "xlswriter"

我用这种方法保护 xlsx:


import xlsxwriter
workbook = xlsxwriter.Workbook('for-test-password.xlsx')
worksheet = workbook.add_worksheet()
content = (
    ['Gas', 10],
    ['Gasoline',   20],
    ['Potro',  30],
    ['Other',40],
)

row = 0
col = 0
for item, cost in (content):
    worksheet.write(row, col,     item)
    worksheet.write(row, col + 1, cost)
    row += 1
worksheet.protect('Passwd')

或尝试在 bash-script 中使用此代码

LibreOffice -p password -f xlsx for-test-password.xlsx

但这不会返回电子表格中的数据。

【问题讨论】:

发布你的代码,如果你尝试过的话。 我编辑问题并插入代码 问题的标题与问题的正文和示例完全不同。一个是关于读取/打开/解密 --- 而另一个是关于写入/保存/加密。 【参考方案1】:

我用这种方法保护 xlsx:

worksheet.protect('Passwd')

这不是保护工作簿的密码。它正在保护工作表。 XlsxWriter 不支持密码保护工作簿/xlsx 文件。

来自XlsxWriter docs on protect():

注意

Excel 中的工作表级密码提供非常薄弱的​​保护。它们不会加密您的数据,并且很容易停用。 XlsxWriter 不支持完整的工作簿加密,因为它需要完全不同的文件格式,并且需要几个月的时间来实施。

【讨论】:

问题是(AFAIK)在 XlsxWriter 中需要大量工作才能支持不同的文件格式才能启用加密。【参考方案2】:

You missed the workbook.close()

找到代码。

import xlsxwriter
workbook = xlsxwriter.Workbook('for-test-password.xlsx')
worksheet = workbook.add_worksheet()
content = (['Gas', 10],['Gasoline', 20],['Potro', 30],['Other',40],)
row = 0
col = 0
for item, cost in (content):
    worksheet.write(row, col, item)
    worksheet.write(row, col + 1, cost)
    row += 1
    worksheet.protect('Passwd')
workbook.close()

注意:以上代码在 python2.7 中运行良好

要在终端/bash 中打开受密码保护的密码,您需要一个模块,该模块位于 here

受保护的工作表及其属性可以在here找到

【讨论】:

不,这不起作用,因为我需要打开受此程序保护的工作表,即我需要通过“密码”打开第一个文档,然后对其进行编辑,最后使用“密码”设置密码 您的问题不清楚。您编写的代码是打开一个新文件并添加内容并为工作表设置密码。就这样。如果您需要打开具有密码的现有文件,您必须重写代码以打开文件并更改密码(模块'xlrd')。 是的,这是我的想法,你说我必须使用“xlrd”来打开受保护的 xlsx 文件?没有办法用“xlsxwriter”打开?

以上是关于使用 python-xlsxwriter 或 bash 打开受密码保护的 ods 文件的主要内容,如果未能解决你的问题,请参考以下文章

0xc00000ba失败怎么办?

我的电脑正常启动,怎么每次都会出现“0xc00000ba”失败

uniapp 自定义图片水印插件 Ba-Watermark

uniapp 自定义图片水印插件 Ba-Watermark

Windows——打印机错误(操作无法完成(错误 0x000006ba)。本地打印机后台处理程序服务没有运行。请重新启动打印机后台处理程序或重新启动计算机。)解决方案

uniapp 实时定位(系统后台运行支持息屏)插件 Ba-Location