POI实现excel文件的导出和导入

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还可以使用自定义注解进行需要的字段进行注解开发。

posted @ 2020-11-05 16:50  熬夜总冠军  阅读(1265)  评论(0编辑  收藏  举报