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
