1、首先pom文件引入poi包,如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>poi</artifactId><version>1.0-SNAPSHOT</version>
<dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version></dependency>
</dependencies></project>

2、具体加解密代码如下

import java.io.*;
import java.security.GeneralSecurityException;import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.poifs.crypt.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.LittleEndianInput;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ExcelUtil {public static void main(String[] args) throws Exception {encryptExcl("G:\\学生.xls", "123456");//加密
//        encryptExcl("G:\\学生2.xlsx", "test");//加密
//        decryptExcel_xlsx("G:\\学生2.xlsx", "test");//解密xlsx
//        decryptExcel_xls("G:\\学生.xls", "123456");//解密xls}/***解密xls* @param FILE 文件名* @param password 密码*/public static void decryptExcel_xls(String FILE, String password){try{POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream(FILE));//解密,这个密码不是指保护工作表和工作博密码,而是打开文件密码Biff8EncryptionKey.setCurrentUserPassword(password);HSSFWorkbook wb = new HSSFWorkbook(pfs);//读取测试HSSFSheet sheet = wb.getSheetAt(0);HSSFRow row = sheet.getRow(0);HSSFCell cell = row.getCell(0);System.out.println(cell.getStringCellValue());wb.close();}catch(Exception e){e.printStackTrace();}finally {}}/*** 解密xlsx* @param FILE 文件名* @param password 密码* @throws Exception*/public static void decryptExcel_xlsx(String FILE, String password) throws Exception{Workbook wb = null;FileInputStream in = null;try {in = new FileInputStream(FILE);POIFSFileSystem poifsFileSystem = new POIFSFileSystem(in);EncryptionInfo encInfo = new EncryptionInfo(poifsFileSystem);Decryptor decryptor = Decryptor.getInstance(encInfo);decryptor.verifyPassword(password);wb = new XSSFWorkbook(decryptor.getDataStream(poifsFileSystem));} catch (Exception e) {e.printStackTrace();}finally {in.close();}System.out.println("=================================");System.out.println("Number of Sheets:" + wb.getNumberOfSheets());System.out.println("Sheet1's name:" + wb.getSheetName(0));System.out.println();}/*** 加密Excl* @param FILE* @param password* @throws IOException* @throws InvalidFormatException* @throws GeneralSecurityException*/public static void encryptExcl(String FILE, String password) throws IOException, InvalidFormatException, GeneralSecurityException {if (FILE.toLowerCase().endsWith("xlsx")) {System.out.println("=====加密 xlsx===="+FILE);// 设置密 码 保 护 ·POIFSFileSystem fs = new POIFSFileSystem();EncryptionInfo info = new EncryptionInfo(EncryptionMode.standard);Encryptor enc = info.getEncryptor();//设置密码enc.confirmPassword(password);//加密文件OPCPackage opc = OPCPackage.open(new File(FILE), PackageAccess.READ_WRITE);OutputStream os = enc.getDataStream(fs);opc.save(os);opc.close();// 这一步特别注意,导出之前一定要先关闭加密文件流,不然导出文件会损坏而无法打开os.close();//把加密后的文件写回到流FileOutputStream fos = new FileOutputStream(FILE);fs.writeFilesystem(fos);fos.close();} else {System.out.println("=====加密 xls===="+FILE);POIFSFileSystem poif = new POIFSFileSystem(new FileInputStream(FILE));HSSFWorkbook wb = new HSSFWorkbook(poif);// 设置密 码 保 护 ·Biff8EncryptionKey.setCurrentUserPassword(password);wb.writeProtectWorkbook(Biff8EncryptionKey.getCurrentUserPassword(), "管理员");wb.unwriteProtectWorkbook();// 写入excel文件FileOutputStream fileOut = new FileOutputStream(FILE);wb.write(fileOut);fileOut.close();}System.out.println("over");}}

java使用poi对excel文件的加密解密相关推荐

  1. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  2. java使用poi生成Excel文件并合并单元格

    java使用poi生成Excel文件并合并单元格        业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...

  3. java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

    首先,引入所需的jar包: 如果是maven管理项目的jar包,只需在pom.xml中加上: [html] view plaincopy <!-- https://mvnrepository.c ...

  4. Java使用POI读取Excel文件

    上篇文章记录了简单的POI创建Excel文件,依赖导入可参考上篇 POI读取excel中公式 @Testpublic void testRead() throws Exception {//读取文件的 ...

  5. Java使用POI操作Excel文件

    我们可以使用POI操作Excel文件,本文主要介绍:"导入POI的Maven依赖"."创建Poi对象"."Poi读取Excel工作表数目". ...

  6. java使用poi给excel文件插入数据

    excel模板文件 代码 package com.example.demo;import java.io.File; import java.io.FileInputStream; import ja ...

  7. java使用poi解析Excel文件

    本文取自http://www.cnblogs.com/hongten/p/java_poi_excel_xls_xlsx.html java中读取Excel文件并解析 Excel2007及以前的文件使 ...

  8. java的poi导出Excel文件

    首先创建 实体类: package cn.temptation.domain;import java.util.Date;import com.fasterxml.jackson.annotation ...

  9. java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件

    工作中临时需要对各种订单量进行简单的统计分析,为了方便简单学习了apache poi 对 xlsx 文件的基本操作,简单记录 1. 引包 org.apache.poi poi-ooxml 4.1.2 ...

最新文章

  1. 【开源方案共享】无序点云快速的线段分割算法
  2. 【C语言】13-指针和字符串
  3. 常考数据结构与算法:输出二叉树的右视图
  4. 32位的cpu不能安装linux_Python3.5.2 安装教程【64位/32位】
  5. BERT原理、代码、相关模型、精调技巧,看这个就够了
  6. windows server 2008 r2虚拟机故障群集迁移
  7. WeChall_PHP-htmlspecialchars
  8. [蓝桥杯2016决赛]七星填数-next_permutation枚举
  9. 每天CookBook之Python-003
  10. fileupload 上传文件函数 --把图片名用日期时间命名
  11. 98版五笔字型实用学习教程
  12. Python学习之Python入门知识(一)
  13. Python 画分布图
  14. 前锋java退学_曾经的第一高中生为打CBA从清华大学退学,本赛季场均仅3.1分!...
  15. Python之(scikit-learn)机器学习
  16. 时间复杂度和空间复杂度及多道例题讲解
  17. 半同步半异步模式以及Leader_Follwer模式
  18. 网关Gateway过滤器的使用
  19. mysql官网怎么下载驱动包_如何在官网上下载mysql驱动
  20. 写博客,成专家;为了什么,成就了什么?

热门文章

  1. 批处理 Win10锁屏背景图片的提取
  2. 四六级听力考试高频词汇分类记忆-日常生活类
  3. 电脑主板进bios的启动快捷键汇总
  4. Olny Flashlight
  5. Recent Advances in Open Set Recognition A survey全文翻译精校
  6. 《算法导论》第十二章——二叉搜索树
  7. Unity4.3.1引擎源码编译过程
  8. 分类性能度量指标:准确性(AC)、敏感性(SE)、特异性(SP)、F1评分、ROC曲线、PR(Precision-Recall)曲线、AUC曲线,混淆曲线
  9. Zabbix篇之Web登录页面报错:Database:Error connecting to database: Access denied for user ‘zabbix‘ @ ‘localhos
  10. 微信答题小程序开发遇到过的坑