概述

设置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的更多相关文章

  1. java加密解密的学习

    注:此文章只是对如何学习java加密解密技术做一个讲解.并不涉及具体的知识介绍,如果有需要请留言,有时间我补冲长.个人觉着学习一个学习方法比学习一个知识点更有价值的多. 首先,对于加密解密知识体系没有 ...

  2. Java加密解密字符串

    http://www.cnblogs.com/vwpolo/archive/2012/07/18/2597232.html Java加密解密字符串   旧文重发:http://www.blogjava ...

  3. java加密解密

    java加密解密 public class MD5Util { /** * @param args */ public static void main(String[] args) { System ...

  4. password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)

    Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...

  5. Java加密解密大全

    ChinaSEI系列讲义(By 郭克华)   Java加密解密方法大全                     如果有文字等小错,请多包涵.在不盈利的情况下,欢迎免费传播. 版权所有.郭克华 本讲义经 ...

  6. java加密解密算法位运算

    一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...

  7. ◆JAVA加密解密-3DES

    从数据安全谈起       当你使用网银时,是否担心你的银行卡会被盗用?     当你和朋友用QQ进行聊天时,是否担心你的隐私会被泄露?     作为开发者,编写安全的代码比编写优雅的代码更重要,因为 ...

  8. java加密-解密小结

    加密算法可以分为 双向加密(对称加密.不对称加密) 单向加密(不可逆加密)—— MD5.sha.hmac... 在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密 有: ...

  9. cooking java ——加密解密

    java安全与密码概述 主要分为三部分: 密码学基础,包括:相关术语:分类:常用安全体系. java的安全组成:jdk以及第三方扩展. 相关实现代码,包括:base64.MD5········ 密码学 ...

随机推荐

  1. 【重学Node.js 第1&2篇】本地搭建Node环境并起RESTful Api服务

    本地搭建Node环境并起RESTful Api服务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https: ...

  2. flask配置详解

    直接修改config对象 flask会有一个可用的配置对象保存着载入的配置值: Flask 对象的 config 属性,这是 Flask 自己放置特定配置值的地方,也是扩展可以存储配置值的地方.但是, ...

  3. 【python测试开发栈】帮你总结python random模块高频使用方法

    随机数据在平时写python脚本时会经常被用到,比如随机生成0和1来控制逻辑.或者从列表中随机选择一个元素(其实抽奖程序也类似,就是从公司所有人中随机选择中奖用户)等等.这篇文章,就帮大家整理在pyt ...

  4. 如何让接口文档自动生成,SpringBoot中Swagger的使用

    目录 一.在SpringBoot项目中配置Swagger2 1.pom.xml中对Swagger2的依赖 2.编写配置类启用Swagger 3.配置实体类的文档 4.配置接口的文档 5.访问文档 二. ...

  5. 1046 划拳 (15 分)C语言

    划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒.两人同赢或两人同输 ...

  6. 从0开发3D引擎(五):函数式编程及其在引擎中的应用

    目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 ...

  7. 关于redis分布式锁

    Lock 分布式锁 1.安全属性:互斥,不管任何时候,只有一个客户端能持有同一个锁. 2.效率属性A:不会死锁,最终一定会得到锁,就算一个持有锁的客户端宕掉或者发生网络分区. 3.效率属性B:容错,只 ...

  8. JavaScript-null与' '的区别

    null代表的是空对象无地址,而' '则代表的是有地址,但是这个地址里面的内容为空

  9. 超级火的java自学网站

    学靠的是毅力和自律,一定要坚持,否则就会前功尽弃,我自己也一直在边学边工作,当然自学要配合好的学习资料. 我是通过这个地方去学习的,它可以添加学习计划,从java基础到高级,从后台到前端,从细节到框架 ...

  10. Java 中的四种权限修饰符

    * * private: * Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”. * 被其修饰的属性以及方法只能被该类的对象 访问,其子类不能访问,更不能允许跨包访问. * * def ...