Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python或LibreOffice保存用密码加密的xlsx文件_Python_Excel_Encryption_Ubuntu 14.04_Libreoffice Calc - Fatal编程技术网

Python或LibreOffice保存用密码加密的xlsx文件

Python或LibreOffice保存用密码加密的xlsx文件,python,excel,encryption,ubuntu-14.04,libreoffice-calc,Python,Excel,Encryption,Ubuntu 14.04,Libreoffice Calc,我试图保存一个用密码加密的Excel文件。我已经试着按照指南上-和完美的工作。然而,这是在GUI中,但是我正在寻找一种在headless模式下使用命令行界面的解决方案 我已经看了文库,但里面什么也找不到 同样,我也查看了Python3库的文档openpyxl,但也没有发现任何有用的东西 是否可以使用不需要任何用户交互或X会话的命令行(或Python库)在Ubuntu 14.04/16.04上保存用密码加密的Excel 2007+文件。如果您想从CPython/PyPy使用它,可以使用模块调用外部

我试图保存一个用密码加密的Excel文件。我已经试着按照指南上-和完美的工作。然而,这是在GUI中,但是我正在寻找一种在headless模式下使用命令行界面的解决方案

我已经看了
文库
,但里面什么也找不到

同样,我也查看了Python3库的文档
openpyxl
,但也没有发现任何有用的东西

是否可以使用不需要任何用户交互或X会话的命令行(或Python库)在Ubuntu 14.04/16.04上保存用密码加密的Excel 2007+文件。如果您想从CPython/PyPy使用它,可以使用模块调用外部Jython脚本

  • 我假设您已经安装了JavaJRE/JDK
  • 使用Excel/Calc创建未加密的xlsx文件,或使用或并将其另存为test1.xlsx
  • 下载独立Jython
  • 下载ApachePOI
  • 在同一目录中提取Apache POI,其中是独立的Jython jar
  • 将以下Jython脚本另存为encrypt.py:
  • 导入操作系统
    导入系统
    从java.io导入BufferedInputStream
    从java.io导入文件InputStream
    从java.io导入文件输出流
    从java.io导入文件
    从java.io导入IOException
    从org.apache.poi.poifs.crypt导入EncryptionInfo,EncryptionMode
    从org.apache.poi.poifs.crypt导入Ciperalgorithm,HashAlgorithm
    从org.apache.poi.poifs.crypt.agile导入AgileEncryptionFoBuilder
    从org.apache.poi.openxml4j.opc导入OPCPackage,PackageAccess
    从org.apache.poi.poifs.filesystem导入poifsffilesystem
    从org.apache.poi.ss.usermodel导入WorkbookFactory
    def encrypt_xlsx(输入名称、输出名称、密码):
    #阅读
    in_f=文件(in_fname)
    in\u wb=WorkbookFactory.create(in\u f,密码)
    in_fis=FileInputStream(in_fname)
    in_wb.close()
    #加密
    out_poi_fs=poifsffilesystem()
    info=EncryptionInfo(EncryptionMode.agile)
    enc=info.getEncryptor()
    enc.confirmPassword(密码)
    opc=OPCPackage.open(在f中,PackageAccess.READ\u WRITE)
    out\u os=enc.getDataStream(out\u poi\u fs)
    opc.save(输出操作系统)
    opc.close()
    #写
    out\u fos=FileOutputStream(out\u fname)
    out\u poi\u fs.writeFilesystem(out\u fos)
    结束
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    in_fname=sys.argv[1]
    out\u fname=sys.argv[2]
    密码=sys.argv[3]
    加密\u xlsx(输入\u fname、输出\u fname、密码)
    
  • 从控制台调用它:
  • java-cp“jython-standalone-2.7.0.jar:poi-3.15/lib/commons-codec-1.10.jar:poi-3.15/lib/commons-collections4-4.1.jar:poi-3.15/poi-3.15/poi-ooxml-3.15.jar:poi-3.15/poi-ooxml-schemas-3.15.jar:poi-3.15/poi-ooxml-schemas-3.15.15.jar:poi-3.15/poi-3.15org.python.util.jython-B encrypt.py test1.xlsx test1enc.xlsx 12345678
    
    其中:

    • encrypt.py-脚本的名称
    • test1.xlsx-输入文件名
    • test1enc.xlsx-输出文件名
    • 12345678-密码
    最终加密的xslx应该在test1enc.xlsx中