博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java使用poi解密excel文件
阅读量:4134 次
发布时间:2019-05-25

本文共 2010 字,大约阅读时间需要 6 分钟。

这里所说的解密是指数解密文件密码,而非保护工作表或工作博的密码,代码如下:

import java.io.FileInputStream;

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.poifs.filesystem.POIFSFileSystem;

/**

 * 
 * <p>类描述:使用poi解密excel  </p>
 * <p>创建人:wanghonggang  </p>
 * <p>创建时间:2019年8月13日 下午8:59:35  </p>
 * 所需引用jar包:poi和poi-ooxml
 */
public class TestPoi {

    /**

     * 
     * <p>方法描述:测试 TODO</p>
     * <p>创建人: wanghonggang  </p>
     * <p>创建时间: 2019年8月13日 下午9:00:05 </p>
     * <p>修改记录:</p>
     * @param args 
     * void
     */
    public static void main(String[] args) {
        try{
            POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream("E:\\test\\2.xls")); 
            //解密,这个密码不是指保护工作表和工作博密码,而是打开文件密码
            Biff8EncryptionKey.setCurrentUserPassword("123"); 
            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文件解密方法如下:

import java.io.File;

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.ss.usermodel.WorkbookFactory;

/**

 * 
 * <p>类描述:使用poi解密excel .xlsx  </p>
 * <p>创建人:wanghonggang  </p>
 * <p>创建时间:2019年8月13日 下午8:59:35  </p>
 * 所需引用jar包:poi和poi-ooxml
 */
public class TestPoi4 {

    /**

     * 
     * <p>方法描述:测试 TODO</p>
     * <p>创建人: wanghonggang  </p>
     * <p>创建时间: 2019年8月13日 下午9:00:05 </p>
     * <p>修改记录:</p>
     * @param args 
     * void
     */
    public static void main(String[] args) {
        try{
            Workbook wb = WorkbookFactory.create(new File("E:\\test\\V2.1.xlsx"), "3");
            
            //读取测试
            Sheet sheet = wb.getSheetAt(0);
            Row row = sheet.getRow(0);
            Cell cell = row.getCell(0);
            
            System.out.println(cell.getStringCellValue());
            wb.close();
        }catch(Exception e){
            e.printStackTrace();
        }finally {
        }
    }
}
 

转载地址:http://yhivi.baihongyu.com/

你可能感兴趣的文章
Count on a tree SPOJ - COT(树上差分+lca+主席树)
查看>>
Diversity HDU - 6725
查看>>
Transformation HDU - 6726(百度之星复赛2019 dfs)
查看>>
Alyona and a tree CodeForces - 740D
查看>>
Drying POJ - 3104(二分+思维)
查看>>
River Hopscotch POJ - 3258(最小值最大化 二分)
查看>>
XKC's basketball team(2019徐州站网络赛E线段树)
查看>>
Queue CodeForces - 91B(线段树)
查看>>
so easy(2019徐州icpc网络赛B)
查看>>
Serge and Dining Room CodeForces - 1179C(线段树)
查看>>
Sequence II HDU - 5919(主席树)
查看>>
Problem E. Split The Tree HDU - 6504(主席树)
查看>>
[CQOI2009]叶子的染色(树形dp)
查看>>
[HAOI2015]树上染色(树形dp,树形背包)
查看>>
旅游(树形dp求树的最大独立集)
查看>>
[HNOI2003]消防局的设立(贪心)
查看>>
Light bulbs(上海icpc网络预选赛,差分离散化)
查看>>
Stone game(dp计数上海icpc网络预选赛)
查看>>
数糖纸(离散化)
查看>>
D-City HDU - 4496(反向并查集)
查看>>