Apache POI 的类
- HSSF、XSSF 和 XSSF 类
Apache POI 主类通常以 HSSF、XSSF 或者 SXSSF 开头。 - HSSF - 是 POI 项目的 Excel '97(-2007) 文件格式的纯 Java 实现。例如 HSSFWorkbook、HSSFSheet。
- XSSF - 是 POI 项目的 Excel 2007 OOXML (.xlsx) 文件格式的纯 Java 实现。例如 XSSFWorkbook、XSSFSheet。
- SXSSF(自 3.8-beta3 起)- 是 XSSF 的 API 兼容流扩展,可在必须生成非常大的电子表格且堆空间有限时使用。例如 SXSSFWorkbook、SXSSFSheet。
SXSSF 通过限制对滑动窗口内的行的访问来实现其低内存占用,而 XSSF 允许访问文档中的所有行。
- Row 和 Cell
除了上面的类,Row 和 Cell 用于与 Excel 表格中的特定行和特定单元格进行交互。 - 样式类
各种各样的类,如 CellStyle、BuiltinFormats、ComparisonOperator、ConditionalFormattingRule、FontFormatting、IndexedColors、PatternFormatting、SheetConditionalFormatting 等。
当我们必须在工作表中添加格式时使用,主要基于某些规则。
- FormulaEvaluator
另一个有用的类 FormulaEvaluator 用于评估 Excel 表中的公式单元格。
Apache POI - 读取 excel 文件
如果我们将其分为几个步骤,使用 POI 读取 excel 文件也非常简单。
- 从 Excel 工作表创建工作簿实例
- 指定要读取的工作表
- 增加行号
- 遍历一行中的所有单元格
- 重复步骤 3 和 4,直到读取所有数据
示例
package com.onitroad.demo.poi; //import statements public class ReadExcelDemo { public static void main(String[] args) { try { FileInputStream file = new FileInputStream(new File("onitroad_demo.xlsx")); // 创建Workbook实例 XSSFWorkbook workbook = new XSSFWorkbook(file); // 获取要进行操作的sheet,这里选择第1个 XSSFSheet sheet = workbook.getSheetAt(0); // 逐行迭代 Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); // 在每1行中,遍历所有单元格 Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); // 检查单元格的类型和格式 switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "t"); break; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "t"); break; } } System.out.println(""); } file.close(); } catch (Exception e) { e.printStackTrace(); } } }
Apache POI - 依赖关系
如果我们正在处理 Maven 项目,则可以使用以下命令在 pom.xml
文件中包含 POI 依赖项:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency>
如果我们没有使用 maven,那么我们可以从 POI 下载页面直接下载 maven jar 文件。
包含以下 jar 文件:
- dom4j-1.6.1.jar
- poi-3.9-20121203.jar
- poi-ooxml-3.9-20121203.jar
- poi-ooxml-schemas-3.9-20121203.jar
- xmlbeans-2.3.0.jar
更多: zhilu jiaocheng
Apache POI - 编写一个excel文件
使用 POI 编写 excel 非常简单,包括以下步骤:
- 创建工作簿
- 在工作簿中创建工作表
- 在工作表中创建一行
- 在工作表中添加单元格
- 重复步骤 3 和 4 写入更多数据
package com.onitroad.demo.poi; //import statements public class WriteExcelDemo { public static void main(String[] args) { // 空白工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); // 创建空白的Sheet XSSFSheet sheet = workbook.createSheet("Employee Data"); // 将数据保存到 (Object[]) Map<String, Object[]> data = new TreeMap<String, Object[]>(); data.put("1", new Object[] {"ID", "NAME", "LASTNAME"}); data.put("2", new Object[] {1, "cherry", "Shukla"}); data.put("3", new Object[] {2, "Jamez", "Gupta"}); data.put("4", new Object[] {3, "John", "Adwards"}); data.put("5", new Object[] {4, "BobRobert", "Schultz"}); // 迭代并把数据写入sheet Set<String> keyset = data.keySet(); int rownum = 0; for (String key : keyset) { Row row = sheet.createRow(rownum++); Object [] objArr = data.get(key); int cellnum = 0; for (Object obj : objArr) { Cell cell = row.createCell(cellnum++); if(obj instanceof String) cell.setCellValue((String)obj); else if(obj instanceof Integer) cell.setCellValue((Integer)obj); // 如果要添加公式,可以使用setCellFormula } } try { // 写到文件系统 FileOutputStream out = new FileOutputStream(new File("onitroad_demo.xlsx")); workbook.write(out); out.close(); System.out.println("onitroad_demo.xlsx written successfully on disk."); } catch (Exception e) { e.printStackTrace(); } } }
使用 POI,我们可以使用 Java 读取和写 MS Excel 文件。
Apache POI 是许多其他开源库中备受信赖的库。
日期:2020-09-17 00:09:25 来源:oir作者:oir