java 用模板导出excel,并且合并单元格

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36675996/article/details/79884377

编写步骤:
1.写一个excel模板
这里写图片描述
topicMap为后台Map中的key值,value值为一个list,在这里进行遍历;

2.在webapp下建一个文件夹,将该模板放入;
这里写图片描述

3.上代码
我是用的springMvc

@RequestMapping(value = "xxxxxxx")
    public void exportByYjfx(HttpServletResponse response, HttpServletRequest request)
    throws FileNotFoundException {
        // 文件根路径
        String fileRootPath = request.getSession().getServletContext().getRealPath("/excelTemplate");
        // 文件名称
        String fileName = "tjtrFsmd.xls";
        // 内容
        Map<String, Object> bean = new HashMap<String, Object>();
        @SuppressWarnings("unchecked")
        List<对象> xxx = (List<对象>) 
        bean.put("topicMap", 你需要往里填充的数据);
        String fileNameS;
        fileNameS = "导出名字.xls";
        // 设置sheet页名称
        String sheetName = "名称";
        downFile(response, bean, fileRootPath, fileName, fileNameS, sheetName);
    }

    // 文件下载
    private void downFile(final HttpServletResponse response, Map<String, Object> bean, String fileRootPath,
            String fileName, String fileNameS, String sheetName)
            throws FileNotFoundException {
        if (bean != null) {
            XLSTransformer transformer = new XLSTransformer();
            InputStream in = new FileInputStream(new File(fileRootPath + File.separator + fileName));
            HSSFWorkbook workbook;
            try {
                workbook = (HSSFWorkbook) transformer.transformXLS(in, bean);
                Sheet sheet = workbook.getSheetAt(0);
                // 设置sheet页名称
                workbook.setSheetName(0, sheetName);

                /**合并单元格需要的逻辑
                // 起始行
                int f = 1;
                // 结束行
                int g = 0;
        sheet.addMergedRegion(new CellRangeAddress(f, g, i, i));//合并单元格的函数,我把我的逻辑删掉了,按情况进行合并
*/
                try {
                    response.setContentType("application ns.ms-excel");
                    response.setHeader("Expires", "0");
                    response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
                    response.setHeader("Pragma", "public");
                    response.setHeader("Content-disposition",
                            "attachment;filename=" + new String(fileNameS.getBytes("gb2312"), "ISO8859_1"));
                    workbook.write(response.getOutputStream());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } catch (ParsePropertyException e1) {
                e1.printStackTrace();
            } catch (InvalidFormatException e1) {
                // TODO 自动生成的 catch 块
                e1.printStackTrace();
            }
        }
    }

搞定!

猜你喜欢

转载自blog.csdn.net/qq_36675996/article/details/79884377