Apache POI公式
本章將介紹如何使用Java編程應用不同單元公式的過程。 Excel應用程序的基本目的是通過應用公式就可以保持數值數據。
在公式中,我們通過動態值,或在Excel工作表中的值的位置。在執行這個公式,就會得到想要的結果。下表列出了常用的在Excel中的幾個基本公式。
操作 | 語法 |
---|---|
添加多個數值 | = SUM(Loc1:Locn) or = SUM(n1,n2,) |
計數 | = COUNT(Loc1:Locn) or = COUNT(n1,n2,) |
兩個數的冪 | = POWER(Loc1,Loc2) or = POWER(number, power) |
多個數的最大值 | = MAX(Loc1:Locn) or = MAX(n1,n2,) |
乘積 | = PRODUCT(Loc1:Locn) or = PRODUCT(n1,n2,) |
階乘 | = FACT(Locn) or = FACT(number) |
絕對數字 | = ABS(Locn) or = ABS(number) |
今天的日期 | =TODAY() |
轉換成小寫 | = LOWER(Locn) or = LOWER(text) |
平方根 | = SQRT(locn) or = SQRT(number) |
以下代碼用於公式添加至單元格,並執行它。
import java.io.File; import java.io.FileOutputStream; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Formula { public static void main(String[] args)throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet spreadsheet = workbook.createSheet("formula"); XSSFRow row = spreadsheet.createRow(1); XSSFCell cell = row.createCell(1); cell.setCellValue("A =" ); cell = row.createCell(2); cell.setCellValue(2); row = spreadsheet.createRow(2); cell = row.createCell(1); cell.setCellValue("B ="); cell = row.createCell(2); cell.setCellValue(4); row = spreadsheet.createRow(3); cell = row.createCell(1); cell.setCellValue("Total ="); cell = row.createCell(2); // Create SUM formula cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell.setCellFormula("SUM(C2:C3)" ); cell = row.createCell(3); cell.setCellValue("SUM(C2:C3)"); row = spreadsheet.createRow(4); cell = row.createCell(1); cell.setCellValue("POWER ="); cell=row.createCell(2); // Create POWER formula cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell.setCellFormula("POWER(C2,C3)"); cell = row.createCell(3); cell.setCellValue("POWER(C2,C3)"); row = spreadsheet.createRow(5); cell = row.createCell(1); cell.setCellValue("MAX ="); cell = row.createCell(2); // Create MAX formula cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell.setCellFormula("MAX(C2,C3)"); cell = row.createCell(3); cell.setCellValue("MAX(C2,C3)"); row = spreadsheet.createRow(6); cell = row.createCell(1); cell.setCellValue("FACT ="); cell = row.createCell(2); // Create FACT formula cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell.setCellFormula("FACT(C3)"); cell = row.createCell(3); cell.setCellValue("FACT(C3)"); row = spreadsheet.createRow(7); cell = row.createCell(1); cell.setCellValue("SQRT ="); cell = row.createCell(2); // Create SQRT formula cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); cell.setCellFormula("SQRT(C5)"); cell = row.createCell(3); cell.setCellValue("SQRT(C5)"); workbook.getCreationHelper() .createFormulaEvaluator() .evaluateAll(); FileOutputStream out = new FileOutputStream( new File("formula.xlsx")); workbook.write(out); out.close(); System.out.println("fromula.xlsx written successfully"); } }
保存上麵的代碼到文件Formula.java,然後編譯並從命令提示符如下執行它。
$javac Formula.java $java Formula
它會生成一個名為formula.xlsx在當前目錄中的Excel文件並顯示在命令提示符處鍵入以下輸出。
fromula.xlsx written successfully
formula.xlsx文件如下所示。