用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();
}
}