java 后台绘制execl表格 并转换base64流导出 (附图)

java 后台画execl表格 在日常开发经常有需要 以下我的相关模板 给大家分享借鉴以下 希望对你有帮助

相关删除和转换base64流在我其他文章有 在这就不一一复制
结尾附图以供参考


/**
     *  生成execl模板
     * @param sheetName 文件名
     * @param codeNumber  标题自定义参数 与生成模板无关
     * @param list  数据集合
     * @author HF . HS
     * @return
     * @throws IOException
     */


    public String exportExcel(String sheetName,Integer codeNumber,List<String>list) throws IOException {

        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet(sheetName);
        sheet.setDefaultColumnWidth(15);
        // 生成一个样式(标题)
        HSSFCellStyle style = wb.createCellStyle();
        HSSFFont fontStyle = wb.createFont();
        fontStyle.setBold(true);   //加粗
        fontStyle.setFontHeightInPoints((short) 16);  //设置标题字体大小
        fontStyle.setColor(HSSFColor.RED.index);
        style.setFont(fontStyle);
        //二级标题
        HSSFCellStyle twoStyle = wb.createCellStyle();
        HSSFFont twofontStyle = wb.createFont();
        twofontStyle.setFontHeightInPoints((short) 14);  //设置标题字体大小
        twoStyle.setFont(twofontStyle);
        //普通文本
        HSSFCellStyle threeStyle = wb.createCellStyle();
        HSSFFont threeFontStyle = wb.createFont();
        threeFontStyle.setFontHeightInPoints((short) 14);  //设置标题字体大小
        threeStyle.setFont(threeFontStyle);
        //表头
        HSSFRow row = sheet.createRow(0);
        HSSFCell cell;
        cell = row.createCell(0);
        cell.setCellValue("激活码总览表(" + codeNumber + ")");
        cell.setCellStyle(style);
        wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(0, 1, 0, 8));
        //创建列标题栏所在行
        row = sheet.createRow(2);
        //根据选择的字段生成表头--标题
        HSSFCell cell1;
        cell1 = row.createCell(0);
        wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
        cell1.setCellValue("序号");
        cell1.setCellStyle(twoStyle);
        cell1 = row.createCell(1);
        cell1.setCellValue("激活码");
        cell1.setCellStyle(twoStyle);
        wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(2, 3, 1, 8));
        Integer num = 2;
        Integer firstrow = null;
        Integer lastrow = null;
        for (int i = 0; i < list.size(); i++) {
            if (i == 0) {
                //创建列标题栏所在行
                //根据选择的字段生成表头--标题
                HSSFCell cell2;
                firstrow = 4;
                lastrow = 5;
                row = sheet.createRow(firstrow);
                cell2 = row.createCell(0);
                cell2.setCellValue(1);
                cell2.setCellStyle(threeStyle);
                wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow,lastrow,0,0));
                HSSFCell cell3;
                cell3 = row.createCell(1);
                cell3.setCellValue(list.get(0));
                cell3.setCellStyle(threeStyle);
                wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow,lastrow,1,8));
            } else {
                firstrow += 2;
                lastrow += 2;
                //创建列标题栏所在行
                row = sheet.createRow(firstrow);
//            row = sheet.createRow(4+i);
                //根据选择的字段生成表头--标题
                HSSFCell cell4;
                cell4 = row.createCell(0);
                cell4.setCellValue(i+1);
                cell4.setCellStyle(threeStyle);
                wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow, lastrow, 0, 0));
                HSSFCell cell5;
                cell5 = row.createCell(1);
                cell5.setCellValue(list.get(i));
                cell5.setCellStyle(threeStyle);
                wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow, lastrow, 1, 8));
            }
        }
            File PDFFilePath = new File("codeExecl.xls");
            FileOutputStream exportXls = new FileOutputStream(PDFFilePath);
            wb.write(exportXls);
            exportXls.close();
            //自定义方法  文件转base64流
            String strResult = PDFToBase64(PDFFilePath);
            strResult = strResult.replaceAll("\r\n", "");
            //删除创建好的无用文件
            deleteFile("codeExecl.xls");
            return strResult;
    }

效果图如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值