poi
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。是目前项目中较流行的导入导出excel框架。我们可以在其基础上做二次开发适用于项目业务。大家也可以使用阿里的easyexcel快速完成poi框架的功能。
POI与excel的映射基础
大家参考excel的基本存储视图,我们用poi何其对应。
以添加一行数据为例,excel涉及以下操作:
- 创建一个excel文档 : 以.xlxs结尾(excel格式,早期版本为 .xlx) --对应图(1)
- 创建一个sheet表单–对应图(2)
- 创建一行数据row–对应图(3)
- 在行中单元格CELL中添加数据–对应图(4,5)
springboot整合框架
引入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
写入数据到excel
@Test
public void writeToExcel() throws Exception {
//1.文档
XSSFWorkbook doc = new XSSFWorkbook();
//2.表单
XSSFSheet sheet = doc.createSheet("东方老人");
//3.行
XSSFRow row = sheet.createRow(0);
//4.单元格
XSSFCell cell = row.createCell(0);
//5. 写入数据
cell.setCellValue("理想老人");
doc.write(new FileOutputStream("D:/orderw.xlsx"));
doc.close();
}
读取excel中数据
包装了一个POIUitl,以读取excel中数据为例
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DateUtil;
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;
@Test
public void readFromExcel() throws Exception{
XSSFWorkbook doc = new XSSFWorkbook(new FileInputStream("D:/order.xlsx"));
XSSFSheet sheet = doc.getSheet("东方养老院");
int lastRow = sheet.getLastRowNum();
for(int r=0;r<=lastRow;r++){
XSSFRow row = sheet.getRow(r);
int lastCell = row.getLastCellNum();
for(int c=0; c<lastCell;c++){
XSSFCell cell = row.getCell(c);
//System.out.println(cell.getStringCellValue());
CellType cellType = cell.getCellType();
// System.out.println(cellType);
Older older = new Older();
switch (cellType){
case NUMERIC:
if(DateUtil.isCellDateFormatted(cell)){
System.out.print(cell.getDateCellValue()+"\t");
}else{ //数值类型
System.out.print(cell.getNumericCellValue()+"\t");
}
break;
case STRING:
System.out.print(cell.getStringCellValue()+"\t");
break;
default:
break;
}
}
System.out.println();
}
// XSSFCell cell = row.getCell(1);
// System.out.println(cell.getStringCellValue());
doc.close();
}
}