java导出各种样式的Excel表格

复制代码
//定义一个新的工作簿
        XSSFWorkbook wb = new XSSFWorkbook();
        //创建一个Sheet页
        XSSFSheet sheet = wb.createSheet(title);
        //设置行高
        sheet.setDefaultRowHeight((short) (2 * 256));
        //为有数据的每列设置列宽
        for (int i = 0; i < headList.size(); i++) {
            sheet.setColumnWidth(i, 8000);
        }
        //设置单元格字体样式
        XSSFFont font = wb.createFont();
        font.setFontName("等线");
        font.setFontHeightInPoints((short) 16);
复制代码

业务需求,自己研究学习并且记录一下笔记:

创建行

XSSFRow row = sheet.createRow(x);//创建一行,从0开始算起
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列,从0开始算单元格
CellRangeAddress rangeAddress = new CellRangeAddress(0, 0, 0, 0);
sheet.addMergedRegion(rangeAddress);

设置单元格样式:

// 创建单元格文字居中样式并设置标题单元格居中
        XSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
        titleCell.setCellStyle(cellStyle);

还未完成,后续补充............

 

 

 

补充个方法,是各种合并单元格来达到需要的样式,这边就不涉及业务单纯搞一个模板出来了:

复制代码
String title="阿巴阿巴";
        String filename="测试";
//        HttpServletResponse response =new ;
        List<Map<String,Object>> mapList=baseDao.getPointScreen();
        Map<String, Object> map = mapList.get(0);
        Set<String> stringSet = map.keySet();
        ArrayList<String> headList = new ArrayList<>(stringSet);
        //定义一个新的工作簿
        XSSFWorkbook wb = new XSSFWorkbook();
        //创建一个Sheet页
        XSSFSheet sheet = wb.createSheet(title);
        XSSFFont font = wb.createFont();
        font.setFontName("等线");
        font.setFontHeightInPoints((short) 16);
        //在sheet里创建第一行,并设置单元格内容为 title (标题)
        XSSFRow titleRow = sheet.createRow(0);
        XSSFCell titleCell = titleRow.createCell(0);
        titleCell.setCellValue("测点");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 2, 6));
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 7, 7));
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 8, 8));
        sheet.addMergedRegion(new CellRangeAddress(2, 26, 0, 0));
        sheet.addMergedRegion(new CellRangeAddress(2, 26, 1, 1));
        sheet.addMergedRegion(new CellRangeAddress(2, 20, 2, 2));
        sheet.addMergedRegion(new CellRangeAddress(2, 20, 3, 3));
        sheet.addMergedRegion(new CellRangeAddress(2, 20, 4, 4));
        sheet.addMergedRegion(new CellRangeAddress(2, 20, 5, 5));
        sheet.addMergedRegion(new CellRangeAddress(2, 20, 6, 6));
        sheet.addMergedRegion(new CellRangeAddress(27, 40, 0, 46));
        // 创建单元格文字居中样式并设置标题单元格居中
        XSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
        titleCell.setCellStyle(cellStyle);
        try {
            response.setContentType("application/vnd.ms-excel");
            filename = URLEncoder.encode(filename, "UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename="
                    .concat(filename));
            OutputStream out = response.getOutputStream();
            wb.write(out);
            wb.close();
            out.close();;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
复制代码

最后生成的模板样式:

 

 熟悉一下后续就可以用于业务了!!!!

posted @   浮笙芸芸  阅读(544)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示