POI实现excel文件的导出和导入
最近在项目中有使用到excel的导入和导出
话不多说,上教程
依赖的导入
<!--poi的核心依赖-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
excel的导出步骤
1、创建一个工作簿XSSFWorkbook
2、创建工作表sheet
3、对其进行格式的调整
4、数据的写入
5、输出到指定文件位置
导出excel的简单实现
/**
* 创建表格
*/
public static void createExcel(String filePath) throws IOException {
//1、创建一个工作簿
XSSFWorkbook wb = new XSSFWorkbook();
//2、创建一个工作表sheet
XSSFSheet sheet = wb.createSheet("字段表");
//3、创建单元格样式
XSSFCellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.WHITE.getIndex());//设置背景颜色
style.setFillPattern(FillPatternType.NO_FILL); //填充样式 有全部填充 有小点填充 有大点填充
//设置文字的格式
style.setAlignment(XSSFCellStyle.ALIGN_CENTER);//文字水平居中
style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//文件垂直居中
style.setBorderBottom(BorderStyle.THIN);//边框加黑
style.setBorderLeft(BorderStyle.THIN);//边框加黑
style.setBorderRight(BorderStyle.THIN);//边框加黑
style.setBorderTop(BorderStyle.THIN);//边框加黑
//创建单元格
for (int i = 0; i < 6; i++) {//创建的行数
Row row = sheet.createRow(i);//创建行
for (int j = 0; j < 6; j++) {//每行的列数
row.createCell(j).setCellStyle(style);
}
}
//合并单元格 参数说明 参数1:合并的开始行 参数2:合并的结束行 参数3:合并的开始单元格 参数4:合并结束的单元格
sheet.addMergedRegion(new CellRangeAddress(0,1,0,0));
sheet.addMergedRegion(new CellRangeAddress(0,0,1,5));
//4、插入数据
XSSFRow row = sheet.getRow(0);//获取第一行
row.getCell(1).setCellValue("这里是表名");//获取第一行的第一个单元格,并且插入数据
XSSFRow row1 = sheet.getRow(1);
row1.getCell(1).setCellValue("字段1");
row1.getCell(2).setCellValue("字段2");
row1.getCell(3).setCellValue("字段3");
row1.getCell(4).setCellValue("字段4");
row1.getCell(5).setCellValue("字段5");
XSSFRow row2 = sheet.getRow(2);
row2.getCell(0).setCellValue("数据行1");
XSSFRow row3 = sheet.getRow(3);
row3.getCell(0).setCellValue("数据行2");
XSSFRow row4 = sheet.getRow(4);
row4.getCell(0).setCellValue("数据行3");
XSSFRow row5 = sheet.getRow(5);
row5.getCell(0).setCellValue("数据行4");
//5、输出文件位置
FileOutputStream fos = new FileOutputStream(filePath);
wb.write(fos);
System.out.println("文件生成成功");
}
excel的导入步骤
1、创建工作簿
2、遍历工作表
3、遍历行
4、设置读取数据的类型
5、读取数据
数据导入的简单实现
/**
* 读取表格
*/
public static void readExcel(String fileName) throws IOException {
InputStream in = new FileInputStream(new File(fileName));
//1、创建工作簿
XSSFWorkbook wb = new XSSFWorkbook(in);
//2、获取表的数量并且遍历
int totalSheet = wb.getNumberOfSheets();//获取共有多少个sheet
for (int i = 0; i < totalSheet; i++) {//遍历
XSSFSheet sheet = wb.getSheetAt(i);
int totalRow = sheet.getPhysicalNumberOfRows();//总行数
//3、遍历行
for (int j = 0; j < totalRow; j++) {
XSSFRow row = sheet.getRow(j);
int totalCell = row.getPhysicalNumberOfCells();//每行的单元格个数
//4、遍历单元格
for (int k = 0; k < totalCell; k++) {
Cell cell = row.getCell(k);
//设置单元格的类型为String类型
cell.setCellType(CellType.STRING);
System.out.print(cell.getStringCellValue()+"--");
}
System.out.println();
}
}
}
这只是简单的入门案例,当然,还可以结合对象进行读取以及输出,整合springBoot还可以使用自定义注解进行需要的字段进行注解开发。