其他分享
首页 > 其他分享> > POI 导出Excel 实例记录

POI 导出Excel 实例记录

作者:互联网

    public static XSSFWorkbook createUserListExcel(List<Map<String,Object>> listresult){
        // 1.创建HSSFWorkbook,一个HSSFWorkbook对应一个Excel文件
        XSSFWorkbook wb = new XSSFWorkbook();
        // 2.在workbook中添加一个sheet,对应Excel文件中的sheet
        XSSFSheet sheet = wb.createSheet("sheet1");
        // 3.设置表头,即每个列的列名
        String[] titel = {"rowName1","rowName2","rowName3","rowName4"};
        // 3.1创建第一行
        XSSFRow row = sheet.createRow(0);
        // 此处创建一个序号列
        row.createCell(0).setCellValue("序号");
        // 将列名写入

        Object style = getDefaultHeaderCellStyle(wb);

        List<ExcelColumn> excelColumns =  ImportExportExcelUtil.xmlToBean(path);;

        Font redFont =  wb.createFont();
        redFont.setColor(Font.COLOR_RED);// 红色


        int j=0;
        for (ExcelColumn e:excelColumns){
            Cell cell = row.createCell(j + 1);
            if(e.getText().contains("*")){
                XSSFRichTextString richString = new XSSFRichTextString(e.getText());

              //  richString.applyFont( 0, 6,  blueFont );

                richString.applyFont( e.getText().length()-2, e.getText().length(), redFont );

                cell.setCellValue(richString);
            }else {
                cell.setCellValue(e.getText());
            }

          //  row.createCell(j+1).setCellValue(e.getText());
            j++;
        }
//
//        for (int i = 0; i < titel.length; i++) {
//            // 给列写入数据,创建单元格,写入数据
//            row.createCell(i+1).setCellValue(titel[i]);
//        }



        // 写入正式数据
        for (int i = 0; i < listresult.size(); i++) {
            // 创建行
            row = sheet.createRow(i+1);
            // 序号
            row.createCell(0).setCellValue(i+1);
            // 医院名称
            row.createCell(1).setCellValue(listresult.get(i).get("rowKey1").toString());
            sheet.autoSizeColumn(1, true);
            // 业务类型
            row.createCell(2).setCellValue(listresult.get(i).get("rowKey2").toString());
            // 异常信息
            row.createCell(3).setCellValue(listresult.get(i).get("rowKey3").toString());
            // 数量
            XSSFCell cell = row.createCell(4);
            XSSFRichTextString richString = new XSSFRichTextString( "Hello*" );

        //    richString.applyFont( 0, 6,  blueFont );

            richString.applyFont( 4, 6, redFont );

            cell.setCellValue(richString);
         //   cell.setCellValue(listresult.get(i).get("rowKey4").toString());
     //       cell.setCellStyle((CellStyle)style);



        }
        /**
         * 上面的操作已经是生成一个完整的文件了,只需要将生成的流转换成文件即可;
         * 下面的设置宽度可有可无,对整体影响不大
         */
        // 设置单元格宽度
        int curColWidth = 0;
        for (int i = 0; i <= titel.length; i++) {
            // 列自适应宽度,对于中文半角不友好,如果列内包含中文需要对包含中文的重新设置。
            sheet.autoSizeColumn(i, true);
            // 为每一列设置一个最小值,方便中文显示
            curColWidth = sheet.getColumnWidth(i);
            if(curColWidth<2500){
                sheet.setColumnWidth(i, 2500);
            }
            // 第3列文字较多,设置较大点。
            sheet.setColumnWidth(3, 8000);
        }
        return wb;
    }

  对象输出

    private static String downUserList(List<Map<String,Object>> listresult){
        // getTime()是一个返回当前时间的字符串,用于做文件名称
        String name ="ExcelTest";
        //  csvFile是我的一个路径,自行设置就行
       // String ys = csvFile + "//" + name + ".xlsx";
        // 1.生成Excel
        XSSFWorkbook userListExcel = createUserListExcel(listresult);
        try{
            // 输出成文件
//            File file = new File(csvFile);
//            if(file.exists() || !file.isDirectory()) {
//                file.mkdirs();
//            }
            // TODO 生成的wb对象传输
            FileOutputStream outputStream = new FileOutputStream(new File(path2));
            userListExcel.write(outputStream);
            outputStream.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        return name;
    }

  调用

    public static void  main(String[] asge){
        List<Map<String,Object>> list = new ArrayList<>();
        Map<String,Object> map = new HashMap<>();
        map.put("rowKey1","rowKey1");
        map.put("rowKey2","rowKey2");
        map.put("rowKey3","rowKey3");
        map.put("rowKey4","rowKey4");

        list.add(map);
        downUserList(list);

        List<ExcelColumn> excelColumns = getExcelColumns();



    }

  

标签:listresult,get,Excel,createCell,实例,POI,new,setCellValue,row
来源: https://www.cnblogs.com/wangfl/p/10953941.html