当前位置: 首页 > news >正文

excel导出加密

在Java中导出Excel并为其设置密码可以通过Apache POI库实现。Apache POI是一个强大的Java库,用于操作Microsoft Office格式的文件,包括Excel。要为导出的Excel文件设置密码,可以使用XSSFWorkbook类(用于生成Excel 2007及以上版本)和POIFSFileSystem。

1、引入maven

<dependencies><!-- Apache POI for Excel --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version> </dependency><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>5.0.2</version> </dependency>
</dependencies>

2、代码实现

package com.meritdata.ddc.common;import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.apache.poi.poifs.crypt.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.security.Security;public class ExcelExportWithPassword {public static void main(String[] args) throws Exception {// 第一步:使用 Apache POI 创建一个 Excel 工作簿Workbook workbook = new XSSFWorkbook();  // 创建一个新的 XSSFWorkbook,表示一个 Excel 文件Sheet sheet = workbook.createSheet("Sheet1");  // 在工作簿中创建一个名为 "Sheet1" 的工作表// 创建第一行,并向其中的单元格写入数据Row row = sheet.createRow(0);  // 创建第一行(索引为 0)Cell cell = row.createCell(0);  // 在第一行创建第一个单元格cell.setCellValue("Hello, World!");  // 在单元格中写入 "Hello, World!" 字符串// 将工作簿写入到一个未加密的 Excel 文件中String filePath = "unEncrypt.xlsx";  // 未加密 Excel 文件的文件路径try (FileOutputStream fileOut = new FileOutputStream(filePath)) {workbook.write(fileOut);  // 将工作簿内容写入文件}workbook.close();  // 写入完成后关闭工作簿,释放资源// 第二步:使用 Bouncy Castle 添加密码保护Security.addProvider(new BouncyCastleProvider());  // 添加 Bouncy Castle 提供者以支持加密// 创建一个新的 POIFSFileSystem 对象,用于保存加密的数据POIFSFileSystem fs = new POIFSFileSystem();// 创建加密信息,使用 Agile 模式(现代 Office 文件使用的加密模式)EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);Encryptor encryptor = info.getEncryptor();  // 创建一个加密器encryptor.confirmPassword("dxj");  // 设置加密文件的密码// 使用 OPCPackage 打开未加密的 Excel 文件try (OPCPackage opc = OPCPackage.open(new File(filePath), PackageAccess.READ_WRITE);OutputStream os = encryptor.getDataStream(fs)) {opc.save(os);  // 将未加密的 Excel 数据写入到加密流中}// 将加密后的 Excel 文件保存为一个新文件try (FileOutputStream fos = new FileOutputStream("encrypt.xlsx")) {fs.writeFilesystem(fos);  // 将文件系统内容写入文件}System.out.println("带有密码的 Excel 文件已成功创建!");}
}

http://www.mrgr.cn/news/55410.html

相关文章:

  • C++源码生成·序章
  • 程序崩溃的形式:为什么C++是coredump,而Golang是panic
  • 博客|基于springBoot的精简博客系统设计与实现(附项目源码+论文+数据库)
  • Linux小知识2 系统的启动
  • MT1351-MT1360 码题集 (c 语言详解)
  • Vue前端开发2.2 数据绑定
  • Win安装Redis
  • Fastapi之model_validator
  • 基于springboot招聘信息管理系统设计与实现(源码+定制+开发)
  • 金九银十互联网大厂Java高频面试题(2024最新含答案)
  • HSIC规范V1.0
  • 易语言注册机速成开发撸彩网论坛分享项目
  • 【JS逆向百例】某赚网 WebSocket 套 Webpack 逆向分析
  • Rust编程语言变量的所有权(ownership)
  • Sqlite3 操作笔记
  • CTFHUB技能树之XSS——过滤空格
  • 安达发|日化品APS智能排产系统的物料齐套欠料分析
  • 【已解决】Eclipse下载安装和环境配置 超详细教程 小白
  • 微服务的一些基本概念
  • Java程序员最好的AI框架,伴随着Spring到来了
  • React是如何处理事件的?
  • 颜廷利:东方智慧的现代诠释者
  • keras的内部的模块有哪些? (自用便签)
  • 《七龙珠:电光炸裂 Zero》销量破纪录,AOC U32G4ZMN带你重燃格斗热血!
  • istio多主集群架构验证方法
  • Kafka之原理解析