Java实现Excel文件加密解密的示例代码

 更新时间:2022年05月31日 11:21:42   作者:E-iceblue  
设置excel文件保护时,通常可选择对整个工作簿进行加密保护。无需设置文档保护时,可撤销密码保护,即解密文档。本文将通过java程序演示以上加密、解密方法的实现,感兴趣的可以了解一下

概述

设置excel文件保护时,通常可选择对整个工作簿进行加密保护,打开文件时需要输入密码;或者对指定工作表进行加密,即设置表格内容只读,无法对工作表进行编辑。另外,也可以对工作表特定区域设置保护,即设置指定区域可编辑或者隐藏数据公式,保护数据信息来源。无需设置文档保护时,可撤销密码保护,即解密文档。下面,将通过java程序演示以上加密、解密方法的实现。

示例大纲

1. Excel工作簿

 1.1 加密工作簿

 1.2 解密工作簿

2. Excel工作表

 2.1 加密工作表

 2.2 加密工作表指定数据范围

 2.3 设置工作表公式不可见

 2.4解密Excel工作表

工具

工具:Free Spire.XLS for Java (免费版)

注1 可通过官网下载jar包,并解压将lib文件夹中的jar文件导入java程序;或者通过maven仓库下载安装导入。

注2这里设置工作表保护时,可支持多种不同类型的保护(如下图),本文示例以选择其中一种为例。

Java代码示例

示例1加密工作簿

import com.spire.xls.*;

public class ProtectWb {
    public static void main(String[] args) {
        //加载测试文档
        Workbook wb = new Workbook();
        wb.loadFromFile("sample.xlsx");

        //使用密码加密工作簿
        wb.protect("123456");

        //保存文档
        wb.saveToFile("ProtectWorkbook.xlsx", ExcelVersion.Version2010);
        wb.dispose();
    }
}

工作簿加密结果:

示例2解密工作簿

import com.spire.xls.*;

public class UnprotectWb {
    public static void main(String[] args) {
        //加载文档
        Workbook wb = new Workbook();
        wb.setOpenPassword("123456");//源文档密码
        wb.loadFromFile("ProtectWorkbook.xlsx");

        //解除密码保护
        wb.unProtect();

        //保存文档
        wb.saveToFile("UnprotectWb.xlsx");
        wb.dispose();
    }
}

运行程序,生成的工作簿文件将不再有密码保护。

示例3加密工作表

import com.spire.xls.*;

import java.util.EnumSet;

public class ProtectSheet {
    public static void main(String[] args) {
        //加载测试文档
        Workbook wb = new Workbook();
        wb.loadFromFile("sample.xlsx");

        //获取第一个工作表
        Worksheet sheet = wb.getWorksheets().get(0);

        //使用密码加密保护
        sheet.protect("654321", EnumSet.of(SheetProtectionType.All));

        //保存文档
        wb.saveToFile("ProtectWorksheet.xlsx", ExcelVersion.Version2010);
        wb.dispose();
    }
}

工作表加密结果:

示例4加密工作表指定数据范围

import com.spire.xls.*;

import java.util.EnumSet;

public class ProtectRange {
    public static void main(String[] args) {
        //加载测试文档
        Workbook wb = new Workbook();
        wb.loadFromFile("sample.xlsx");

        //获取第一个工作表
        Worksheet sheet = wb.getWorksheets().get(0);

        //密码加密工作表
        sheet.protect("123654", EnumSet.of(SheetProtectionType.All));
        //指定可编辑的区域
        sheet.addAllowEditRange("AllowEdit",sheet.getCellRange(3,1,11,8));

        //保存文档
        wb.saveToFile("ProtectRange.xlsx", ExcelVersion.Version2010);
        wb.dispose();
    }
}

指定区域加密结果:

示例5设置工作表公式隐藏

import com.spire.xls.*;

import java.util.EnumSet;

public class ProtectAndHideFormula {
    public static void main(String[] args) {
        //加载文档
        Workbook  wb = new Workbook();
        wb.loadFromFile("sample.xlsx");

        //获取工作表
        Worksheet sheet = wb.getWorksheets().get(0);

        //设置加密
        sheet.protect("123", EnumSet.of(SheetProtectionType.All));
        //隐藏公式
        sheet.getAllocatedRange().isFormulaHidden(true);

        //保存文档
        wb.saveToFile("HideFormula.xlsx",FileFormat.Version2010);
        wb.dispose();
    }
}

设置公式隐藏结果:

示例6解密Excel工作表

import com.spire.xls.*;

public class UnprotectSheet {
    public static void main(String[] args) {
        //加载文档
        Workbook  wb = new Workbook();
        wb.loadFromFile("ProtectWorksheet.xlsx");

        //获取工作表
        Worksheet sheet = wb.getWorksheets().get(0);

        //解除密码保护(需输入源文档密码)
        sheet.unprotect("654321");

        //保存文档
        wb.saveToFile("UnprotectSheet.xlsx",ExcelVersion.Version2010);
        wb.dispose();
    }
}

运行程序,生成的文档中,指定工作表将不再受保护。

到此这篇关于Java实现Excel文件加密解密的示例代码的文章就介绍到这了,更多相关Java Excel加密解密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Cloud 专题之Sleuth 服务跟踪实现方法

    Spring Cloud 专题之Sleuth 服务跟踪实现方法

    这篇文章主要介绍了Spring Cloud 专题之Sleuth 服务跟踪,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 详解spring boot集成ehcache 2.x 用于hibernate二级缓存

    详解spring boot集成ehcache 2.x 用于hibernate二级缓存

    本篇文章主要介绍了详解spring boot集成ehcache 2.x 用于hibernate二级缓存,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 如何用Java结合经纬度位置计算目标点的日出日落时间详解

    如何用Java结合经纬度位置计算目标点的日出日落时间详解

    这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友可以参考下
    2025-01-01
  • Spring boot整合security详解

    Spring boot整合security详解

    Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,本文主要介绍了SpringBoot整合Security安全框架的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Springboot框架整合添加redis缓存功能

    Springboot框架整合添加redis缓存功能

    缓存就是一个存储器,在技术选型中,常用 Redis 作为缓存数据库。缓存主要是在获取资源方便性能优化的关键方面。Redis 是一个高性能的 key-value 数据库,接下来通过本文给大家介绍Springboot框架整合添加redis缓存功能,感兴趣的朋友一起看看吧
    2021-11-11
  • 详解java之redis篇(spring-data-redis整合)

    详解java之redis篇(spring-data-redis整合)

    本篇文章主要介绍了java之redis篇,主要详细的介绍了spring-data-redis整合,有兴趣的可以了解一下。
    2017-01-01
  • SpringBoot Actuator埋点和监控及简单使用

    SpringBoot Actuator埋点和监控及简单使用

    最近做的项目涉及到埋点监控、报表、日志分析的相关知识,于是捣鼓的一番,下面把涉及的知识点及SpringBoot Actuator埋点和监控的简单用法,给大家分享下,感兴趣的朋友一起看看吧
    2021-11-11
  • IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法

    这篇文章主要介绍了IDEA安装lombok插件设置Enable Annotation Processing后编译依然报错解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Java与前端交互出现跨域问题的14种解决方案

    Java与前端交互出现跨域问题的14种解决方案

    跨域问题是前端与后端分离开发中的常见挑战,这篇文章为大家整理了14个常见的解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • Java使用MyBatis框架分页的5种方式

    Java使用MyBatis框架分页的5种方式

    这篇文章主要为大家详细介绍了Java使用MyBatis框架分页的5种方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08

最新评论