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();
		}
	}
}
Java如何读写Excel 文件

使用 POI,我们可以使用 Java 读取和写 MS Excel 文件。
Apache POI 是许多其他开源库中备受信赖的库。

日期:2020-09-17 00:09:25 来源:oir作者:oir