您现在的位置: 爱51代码网 >> 范文 >> 文章正文
ava poi 如何打开加密excel

我的Excel 是加密的,怎样用poi,读取这个文件呢?或使用java解密Excel文件.

如果你的 Apache POI 是 3.8 以后的版本,就可以直接用它对加密的 xls/xlsx 文件进行解密了(当然密码还是要你自己提供)。
但是目前,你还是不能使用 POI 写加密的 excel 文件,只能写没加密的。

这里有个小例子,它读取了一个加密的 excel 文件,使用你自己提供的密码将其解密,然后将其写出为一个未加密的 excel 文件。你可以参考一下:
 
    public static void readProtectedBinFile() {
    try {
 
        InputStream inp = new FileInputStream("c:\\tmp\\protectedFile.xls");
        org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword("abracadabra");
 
        Workbook wb;
        wb = WorkbookFactory.create(inp);
 
        // Write the output to a file
        FileOutputStream fileOut;
        fileOut = new FileOutputStream("c:\\tmp\\unprotectedworkbook.xlsx");
        wb.write(fileOut);
        fileOut.close();
    } catch (InvalidFormatException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
 
}

需要用到poi。
加密用到
HSSFWorkbook的writeProtectWorkbook方法。
具体实现如下:
 
 
package excel;
 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
public class Writer {
 public static final String FILE = "./workbook.xls";
 
 public static void main(String[] args) {
  FileOutputStream fileOut = null;
  try {
   // 创 建一个工作薄
   HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(FILE));
   // 设置密 码 保 护 ·
   wb.writeProtectWorkbook("password", "owner");
   // 写入excel文件
   fileOut = new FileOutputStream(FILE);
   wb.write(fileOut);
   fileOut.close();
  } catch (IOException io) {
   io.printStackTrace();
  } finally {
   if (fileOut != null) {
    try {
     fileOut.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 
 }
 
}

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    A Hashmap中有10个数,B Has
    spring MVC 解析xml失败The 
    mysql查询出数据后如何选择匹
    文件字节流是如何把字节转换
    To display the auto-config
    struts1如何获取前台页面的值
    maven如何加自定义的包
    Dispatcher initialization 
    java怎么随机生成24字节Byte
    spring如何动态注解任务调度
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |