Python给excel加密(linux可用版)

3 篇文章 0 订阅

Python给excel加密(linux可用版)

之前找到了用win32com加密,后来才发现,win32只能在windows上才能使用,没有linux适配的模块,方法失败,搜了半天也没找到答案,后来尝试用java中的jar包来解决问题,使用到的jar包就是:jecell.jar。

环境准备

本地环境是 python3.6,jdk1.8,另外需要 python 的模块 JPype,来调用 jar 包

# 直接下载的话现在是1.3.0了,有一些方法已经变了,我现在使用的是 0.6.3
pip3 install jpype1==0.6.3

附上下载地址:

https://mirrors.aliyun.com/pypi/packages/c4/4b/60a3e63d51714d4d7ef1b1efdf84315d118a0a80a5b085bb52a7e2428cdc/JPype1-0.6.3.tar.gz
使用

JPype 提供的 startJVM()函数的作用是启动 JAVA 虚拟机,所以在后续的任何 JAVA 代码被调用前,必须先调用此方法启动 JAVA 虚拟机。get_default_jvm_path方法可以获取当前系统中JVM的所在路径。

import jpype
jpype.startJVM(jpype.get_default_jvm_path(), *args)

第三方包的引用

很多时候,在 Python 项目中需要调用第三方的 Java 扩展包,这也是 JPype 的一个重要用途。

  • 通过在 JVM 启动参数增加:-Djava.class.path = ext_classpath,实现在 Python 代码中调用已有的 Java 扩展包。
  • 通过在 JVM 启动参数增加: -Djava.ext.dirs = ext_dirs, 实现在Python 代码中引入 Java 扩展包的其他依赖包。

关闭JVM

当使用完 JVM 后,可以通过jpype.shutdownJVM() 来关闭 JVM,该函数没有输入参数。

当 Python 程序退出时,JVM 也会自动关闭。

注:jpype本身无法多次启动和关闭JVM,在使用是,可以不关闭JVM,在需要启动的地方时进行JVM是否已经启动的判断:

> if not jpype.isJVMStarted(): 
>      jpype.startJVM()
示例

这里演示一个最简单的Java示例:

import jpype
if not jpype.isJVMStarted(): 
     jpype.startJVM(jpype.get_default_jvm_path())
     System = jpype.JClass('java.lang.System')
     System.out.println('hello word!')

调用测试

jxcell.jar 下载链接

文件路径:

  • files/
    • jxcell.jar
    • test.xls
  • test.py
import jpype
import os


def set_password_file(url, passwd):
    """
    将文件加密
    :param url: 文件路径 + 文件名
    :param passwd: 密码
    :return:
    """
    project_dir = os.path.dirname(os.path.abspath(__file__))

    jvm_path = jpype.get_default_jvm_path()
    print(jvm_path)
    # 这里根据实际的jxcell.jar路径进行配置,我这里的放的位置是本文件同级目录的lib/jxcell.jar
    jxcell_path = os.path.join(project_dir, 'files/jxcell.jar')

    jpype.startJVM(jvm_path, '-ea', '-Djava.class.path=' + jxcell_path)
    view = jpype.JClass('com.jxcell.View')
    m_view = view()
    m_view.read(url)  # 这里默认要打算加密的文件没有密码,先将文件读取出来
    m_view.write(url, passwd)  # 将读取的文件文件加密


if __name__ == '__main__':
    # 在当前目录下创建一个test.xls表格,随便输入一些数据,供测试
    encrypt('files/test.xls', '123456')

补充说明:

  1. 本文中 jpype 安装用的0.6.3,高版本的方法不一样。
  2. 只能给 xls 文件加密,高版本的貌似也不行。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云中鲸

谢赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值