天天看點

用poi-3.6-20091214.jar 實作java給excel資料加密

用poi-3.6-20091214.jar 實作java給excel檔案加密

我用了網上的很多方法,但是都沒有成功!

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));

   // 設定密 碼 保 護 ·

wb.writeProtectWorkbook("111111", "owner");

紅字辨別的是這個架包裡面沒有構造這個方法?很奇怪,問問大家,可有用java實作對excel檔案進行加密的啊?要具體能用的!非誠勿擾啊! 

[解決辦法]

你找的API是對的啊,為什麼沒有跑成功呢?是不是你拿Excel2007格式檔案在試?

給你貼一個我實作的執行個體,有幾點注意

1. 現在的POI3.5 3.6的XSSF部分都不支援對Excel的xlsx檔案進行加密,是以要用2003格式檔案

2. 運作執行個體完畢之後,再次打開檔案,可以隻讀打開,你選擇輸入密碼通過非隻讀模式打開

3. 給貼的僅僅是一個demo,具體的代碼需要再調整的優雅一些

import org.apache.poi.hssf.usermodel.HSSFWorkbook;      
import java.io.FileInputStream;      
import java.io.File;      
import java.io.FileOutputStream;      
public class EncodExcel2003 {      
public static void main(String[] args)throws Exception{      
FileInputStream fis=new FileInputStream(new File("resources/excel/" +      
"stuInfo.xls")); //這裡換成你本地的excel相對路徑或絕對路徑      
HSSFWorkbook workbook=new HSSFWorkbook(fis);      
//   writeProtectWorkbook第一個參數是打開Excel檔案的密碼      
//   writeProtectWorkbook第二個參數是現實檔案密碼是由誰設定的      
//   第二個參數用中文可能會出現亂碼的情況,我用utf8編碼workspace      
//   可能用gbk不會有亂碼      
workbook.writeProtectWorkbook("password","admin");      
FileOutputStream fos=new FileOutputStream(new File("resources/excel/" +      
"stuInfo.xls"));//這裡換成你本地的excel相對路徑或絕對路徑      
workbook.write(fos);      
fis.close();      
fos.close();      
}      
}