栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Python给excel加密(linux可用版)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python给excel加密(linux可用版)

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 文件加密,高版本的貌似也不行。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号