POI操作Excel:密码保护和公式再计算

来源:互联网 发布:java视频 百度网盘 编辑:程序博客网 时间:2024/05/16 12:50

 

   Excel一个典型的功能就是可以置各种各算公式。因此我在用POI操作Excel的候,如何使Excel里面的公式再算?   如果是针对某一个cell单元来说的话,可以用HSSFCell.setCellFormula对该cell设置计算公式。新生成的Excel中设置计算公式的那个cell就是计算好的值了。
    如果要使整个sheet里面的所有计算公式都重新计算一遍的话,可以用HSSFSheet.setForceFormulaRecalculation(true)方法。这样设置后,这个sheet里面的计算公式都能再计算了。
    时,为了保护个人信息等,我们可能需要对这个Excel文件加密保护。这个时候可以用HSSFWorkbook.writeProtectWorkbook( String password, String username )方法。
    示范代
码如下:模板文件(d:/FormulaRecalculation.xls)有一个公式:A2=A1+B1。 A1初期1,B1初期2,A2的自动计算结果为3。

 public static void main(String[] args) {

   FileOutputStream fileOut = null;
   try {
     // 建一个工作薄
     HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(
       "d:/FormulaRecalculation.xls"));
     // 取得第一个sheet
     HSSFSheet sheet1 = wb.getSheetAt(0);
     // 取得第一个sheet的第一行
     HSSFRow row1 = sheet1.getRow(0);
     // 取得第一个sheet的第一行的第一个cell
      HSSFCell cell1 = row1.getCell(0);
      // 
直接赋
      cell1.setCellValue("10");
  
      // 取得第一个sheet的第一行的第二个cell
      HSSFCell cell2 = row1.getCell(1);
      //
算式 
      cell2.setCellFormula("A1 + 100");

      //设置密
·
     wb.writeProtectWorkbook("password", "owner");
  
      //
设置强行再
      sheet1.setForceFormulaRecalculation(true);
  
      // 写入excel文件
      fileOut = new FileOutputStream("d:/workbook.xls");
      wb.write(fileOut);
      fileOut.close();
    } catch (IOException io) {
       io.printStackTrace();
      System.out.println("erorr : " + io.getMessage());
    } finally {
      if (fileOut != null) {
         try {
              fileOut.close();
         } catch (IOException e) {
                e.printStackTrace();
         }
    }
  }

}

 

   上面程序中的执行结果:
         A1直接10,结果为10
         B1
设置了计算公式A1+100,结果为110
         A2的
计算A1+B1,结果为120。
       
这里需要注意的是如果模板文件的工具->选项中的计算公式属性没有设置为"自"话,这个地方的A2是不会自动计算的,结果还是初始3    上面的代码中如果没有sheet1.setForceFormulaRecalculation(true)置的,执行结果如下:
         A1直接10,结果为10
         B1
设置了计算公式A1+100,结果为110
         A2
的计算是A1+B1,但这个计算公式不会自动计算,因此结果还是初始3    上面的代码由于设置了保护密码,因此生成的workbook.xls文件打开的时候需要输入密码password。

 


原创粉丝点击