通过poi.3.10.final对Excel_2007加密_解密
来源:互联网 发布:无线路由器测速软件 编辑:程序博客网 时间:2024/05/06 04:51
准备包:
poi-security-0.0.1.jar是自己写的,下载地址:http://download.csdn.net/detail/zou_hailin226/9137123
其它的包大家应该知道,就不重复说了,但是有几个注意的地方。第一:poi包必需地3.10-FINAL以后版本;第二:我写的例子是excel2007和以后版本的
废话不多说,直接上代码,代码中“12345”是指的加密和解密的密码
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.ss.usermodel.Cell;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.xssf.usermodel.XSSFWorkbook;import org.junit.Test;import br.com.starcode.poisecurity.DocumentType;import br.com.starcode.poisecurity.decryptor.WorksheetDecryptor;import br.com.starcode.poisecurity.encryptor.WorksheetEncryptor;/**Excel加密 * @author zouhailin * 2015-9-24 */public class ExcelSecurity { /**excel加密 * @throws Throwable */ @Test public void encryptExcel(){ try { Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("test1"); Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("test1"); ByteArrayOutputStream os = new ByteArrayOutputStream(); wb.write(os); ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray()); os.reset(); WorksheetEncryptor.encrypt(is, os, DocumentType.XML, "12345"); is.close(); os.flush(); os.close(); bytesWriteLocal("d://test//test.xlsx", os.toByteArray()); System.out.println("End"); } catch (Exception ex) { ex.printStackTrace(); } } /** * Excel解密 */ @Test public void decryptExcel(){ try { FileInputStream is = new FileInputStream(new File("d://test//test.xlsx")); Workbook wb = (XSSFWorkbook) WorksheetDecryptor.decrypt( is, DocumentType.XML, "12345"); Sheet sheet = wb.getSheet("test1"); Row row = sheet.getRow(0); Cell cell = row.getCell(0); System.out.println(cell.getStringCellValue()); } catch (Exception ex) { ex.printStackTrace(); } System.out.println("End"); } public static void bytesWriteLocal(String path,byte[] b){ File file = new File(path); FileOutputStream out = null; ByteArrayInputStream bIn = null; try { if (!file.exists()) { file.createNewFile(); } out = new FileOutputStream(file); bIn = new ByteArrayInputStream(b); int i = 0; while((i = bIn.read())!=-1){ out.write(i); } } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); }finally { if(bIn!=null) { try { bIn.close(); } catch (IOException ex) { ex.printStackTrace(); } } if(out!=null) { try { out.flush(); } catch (IOException ex) { ex.printStackTrace(); } try { out.close(); } catch (IOException ex) { ex.printStackTrace(); } } } }}
0 0
- 通过poi.3.10.final对Excel_2007加密_解密
- C#通过一个密码对文件进行加密解密操作
- 有关java对压缩文件的加密(通过密码解密)
- 通过IO流对文件进行加密和解密
- 【Java】通过DES加密和解密工具,对字符串进行加密和解密操作
- 【加密解密】对字符串的加密解密
- PHP代码加密_解密
- 二维易位——通过密钥对明文进行加密或对密文进行解密
- 通过RC4加密解密数据
- 对文本文件的加密解密
- 对COOKIES 加密解密 例子
- C#对字符串加密解密
- c# 对字符串加密解密
- 对字符串的加密解密
- 对用户名加密和解密
- js对字符串加密,解密
- 如何对字符串加密解密
- 通过 Perf 对 OpenSSL 中 RSA 加密解密进行性能分析
- SystemUi启动分析
- 图的深度遍历和广度遍历(Java实现)
- Android strings.xml技巧
- 使用Docker Compose创建监控环境
- C# WindowsForm 员工管理系统二【删除】
- 通过poi.3.10.final对Excel_2007加密_解密
- 读IOS进阶笔记。
- 在jsp中应用EL表达式取内置对象的值
- uptime指令的简单实现
- 免费课程《微信公众号开发》开讲啦!!!
- 欢迎使用CSDN-markdown编辑器
- 如何判断请求的接口数据为null或(null)<null>
- linux下怎么查看ssh的用户登录日志
- ksh 复合变量