我的Excel 是加密的,怎样用poi,读取这个文件呢?或使用java解密Excel文件.
------解决思路----------------------
参考 http://poi.apache.org/encryption.html。如果你的 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();
}
}
}
}
}