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

  • 相关阅读:
    Python 单向循环链表
    python 单向链表实现
    Python实现栈
    单进程-非阻塞服务器
    Nginx开发从入门到精通
    Spring入门第十五课
    Spring入门第十六课
    Spring入门第十四课
    Spring入门第十三课
    Spring入门第十二课
  • 原文地址:https://www.cnblogs.com/codeli/p/13932601.html
Copyright © 2020-2023  润新知