java---POI导出Excel

        // 创建输出流
        OutputStream out = null; // 输出流
        Workbook wb = null;
        try {
            out = response.getOutputStream();
            wb = new XSSFWorkbook(); // 创建工作簿
            Sheet sheet1 = wb.createSheet("sheet1");// 创建sheet
            Row rowExcel = sheet1.createRow(0);// 创建第一行
            CellStyle styleHead = wb.createCellStyle(); // 创建表头样式
            styleHead.setAlignment(CellStyle.ALIGN_CENTER);// 创建一个居中格式
            XSSFFont font = (XSSFFont) wb.createFont(); //字体
            font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体显示
            styleHead.setFont(font);
            //设置表头背景色
            styleHead.setFillPattern(CellStyle.SOLID_FOREGROUND);
            styleHead.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
            CellStyle styleBody = wb.createCellStyle(); // 创建内容样式
            styleBody.setAlignment(CellStyle.ALIGN_CENTER);// 创建一个居中格式
            // 生成表头字段
            List<String> rowHeadExcel = tableHead(targetTypeCH, data);
            Cell cell = null;
            for (int i = 0; i < rowHeadExcel.size(); i++) {
                cell = rowExcel.createCell(i);
                cell.setCellValue(rowHeadExcel.get(i));// 设置单元格内容
                cell.setCellStyle(styleHead);
            }
            // 获得要写入的数据
            List<Map<String, Object>> excelDataList = tableContentColumn(rowHeadExcel, data);
            // 写入实体数据
            if (!CollectionUtils.isEmpty(excelDataList)) {
                for (int i = 0; i < excelDataList.size(); i++) {// 根据i创建行
                    rowExcel = sheet1.createRow(i + 1);// 创建行
                    Map<String, Object> excelMap = excelDataList.get(i);// 获取对应行的MAP集合

                    for (int j = 0; j < rowHeadExcel.size(); j++) {// 设置每行单元格内容
                        cell = rowExcel.createCell(j);
                        String excelColumn = rowHeadExcel.get(j);
                        String excelVal = (String) excelMap.get(excelColumn);
                        cell.setCellValue(excelVal);// 设置单元格内容
                        cell.setCellStyle(styleBody);
                    }
                }
            }
            //设置列宽自适应(对中文不管用)
//            sheet1.autoSizeColumn(0,true); “列名”.getBytes().length*2*256
//            sheet1.autoSizeColumn(1,true);
//            sheet1.autoSizeColumn(2,true);
//            sheet1.autoSizeColumn(3,true);
            //设置列宽
            for (int i = 0; i < rowHeadExcel.size(); i++) {
                if(i==0){
                    sheet1.setColumnWidth(i, rowHeadExcel.get(i).getBytes().length*2*256 );
                }else{
                    sheet1.setColumnWidth(i, rowHeadExcel.get(i).getBytes().length*1*280 );
                }
            }
            // 将数据存入输出流中
            wb.write(out);
            data.setReturnCode("0");
            out.flush();

 

posted @ 2017-11-24 16:07  nullyb  阅读(707)  评论(0编辑  收藏  举报