JavaPOI
在POI工具中,我们==工作簿==对象叫Workbook,包含对象有:工作簿,工作表,行,列
导入依赖
xml
<!--xls(03版本,最多存取65536行)-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.3.0</version>
<scope>compile</scope>
</dependency>
<!--xlsx(07版本这个依赖实际含有上面那个依赖)-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.3.0</version>
</dependency>在POI工具中,我们工作簿对象叫Workbook,包含对象有:工作簿,工作表,行,列
这里可以看到工作簿有三个实现类
| 实现类 | 含义 |
|---|---|
| HSSFWorkbook | 03版本工作簿,行数最多25565行 |
| XSSFWorkbook | 07版本工作簿,行数无上限 |
| SXSSFWorkbook | 07版本的super版本,加强了内存管理 |
基本使用(创建)
java
public static void main(String[] args) throws IOException {
//1、创建工作簿
Workbook wb = new HSSFWorkbook();
//2、创建工作表
Sheet sheet = wb.createSheet("Test");
//3、创建一行
Row row = sheet.createRow(0);
//4、创建一个单元格(第一列)
Cell cell = row.createCell(0);
//5、写入数据(第一个单元格)
cell.setCellValue("Hello World");
//6、生成一张表
FileOutputStream outputStream = new FileOutputStream("/sheet.xls");
wb.write(outputStream);
//7、关闭流
outputStream.close();
}
/**
* 07版本需要修改的:
* HSSFWorkbook-->XSSFWorkbook
* sheet.xls-->sheet.xlsx
*/大文件写SXSSF
优点:可以写非常大的数据量,100万,写数据速度快,占用更少内存
注意
过程中会产生临时文件,需要清理临时文件
默认由100条记录保存在内存中,如果超过这个数量,则最前面的数据被写入临时文件
如果想自定义存在内存中的数量,可以使用new SXSSFWorkbook(数量)
工作簿使用close方法的同时会清理临时文件
基本读
需要进行特殊处理,表格中数据含有不同类型,因此不能都是用
String接收,必须指定读取的方式读取的过程中,可能有的单元格是公式,直接读取到没有意义,需要转换
下面这个枚举类列举了所有的单元格类型
| 类型名 | 值 | 解释 |
|---|---|---|
| _NONE | -1 | 表示单元格类型未知或不适用。 |
| NUMERIC | 0 | 表示单元格包含数值类型的数据,可以是整数、浮点数等。(数字、日期等) |
| STRING | 1 | 表示单元格包含字符串类型的数据,即文本。 |
| FORMULA | 2 | 表示单元格包含公式,用于计算结果。 |
| BLANK | 3 | 表示单元格为空,没有数据。 |
| BOOLEAN | 4 | 表示单元格包含布尔值,即真(True)或假(False)。 |
| ERROR | 5 | 表示单元格包含错误值,如除以零的错误或其他公式错误。 |
一般读取
java
public static void main(String[] args) throws IOException {
FileInputStream inputStream = new FileInputStream("/sheet.xlsx");
//1、读取工作簿
Workbook wb = new XSSFWorkbook(inputStream);
Sheet sheet = wb.getSheetAt(0);
Row row1 = sheet.getRow(0);
Cell cell1 = row1.getCell(0);
CellType type = cell1.getCellType();
String value = cell1.getStringCellValue();
System.out.println(value);
}计算公式处理:
public static void main(String[] args) throws IOException {
FileInputStream inputStream = new FileInputStream("/sheet.xls");
HSSFWorkbook wb = new HSSFWorkbook(inputStream);
Sheet sheet = wb.getSheetAt(0);
Row row1 = sheet.getRow(0);
Cell cell1 = row1.getCell(0);
HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(wb);
CellValue cellValue = evaluator.evaluate(cell1);
System.out.println(cellValue.getNumberValue());
}评论
评论加载中……