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文件如下所示。

Formula