如何使用Java和Apache POI在Excel表中创建公式表
Excel表格主要用于在各种领域,包括商业、金融和研究领域等,进行数据排列和分析。作为开发人员,我们可能会遇到需要以编程方式创建Excel文件并填充动态数据的情况。在Excel列中加入公式还可以改善功能并自动化电子表格中的计算。
使用的方法
- Apache POI方法
Apache POI方法
步骤
- 设置Apache POI:从官方网站下载Apache POI库并将其添加到项目的依赖项中。确保你选择了与你的需求相符的正确版本的Apache POI。
- 导入指定的类:将Apache POI库中的基本类导入到你的代码中。通常包括来自org.apache.poi.ss.usermodel包的类,例如Workbook、Sheet和Cell。
- 创建新的Excel工作簿和工作表:通过使用适当的实现类(例如XSSFWorkbook用于.xlsx文件或HSSFWorkbook用于.xls文件),创建一个代表Excel工作簿的Workbook对象的新实例。通过使用createSheet()方法,在工作簿中创建一个新的工作表。
- 创建并设置公式单元格:在工作表中获取对需要设置公式的单元格的引用。使用getRow()和createCell()方法来访问或创建单元格。使用setCellFormula()方法将公式设置为该单元格,将所需的公式作为字符串参数传递。
- 评估公式单元格:为了确定公式单元格的计算值,需要对其进行评估。使用FormulaEvaluator类来评估公式。使用getCreationHelper().createFormulaEvaluator()方法来获取FormulaEvaluator的实例。然后,将单元格对象传递给评估器的evaluate()方法。
- 将工作簿写入文件:指定要保存Excel工作簿的文件位置。使用FileOutputStream类创建文件流。在工作簿对象上调用write()方法,并将FileOutputStream作为参数传递,将工作簿数据写入文件中。
- 关闭工作簿:将工作簿写入文件后,关闭它以释放系统资源。使用工作簿对象的close()方法来正确关闭它。
示例
package GFG_Maven.GFG_MAven;
import org.testng.annotations.Test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
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 Geeks {
@Test
public void geekforgeeks() throws IOException{
XSSFWorkbook workbook=new XSSFWorkbook();
XSSFSheet sheet=workbook.createSheet("Numbers");
XSSFRow row=sheet.createRow(0);
row.createCell(0).setCellValue(10);
row.createCell(1).setCellValue(10);
row.createCell(2).setCellValue(10);
row.createCell(3).setCellFormula("A1+B1+C1");
FileOutputStream file = new FileOutputStream("C:\Users\ADMIN\Desktop\calc.xlsx");
workbook.write(file);
file.close();
System.out.println("calc.xlsx file is created with Formula cell");
}
}
输出
结论
我们首先将Apache POI集成到我们的Java项目中,并开发了一个Excel工作簿和页面。然后,使用setCellFormula()函数构建了一个计算特定单元格求和的公式单元格。我们还可以使用FormulaEvaluator来评估公式并提取结果。通过按照本课程中所示的步骤,您可以动态生成Excel文件,自动计算,并构建适合您个人需求的数据驱动电子表格。这个功能对于处理和分析大量数据集或创建依赖复杂计算的报告特别有用。