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