`

生成EXCEL的公共方法(使用模板)

阅读更多
   /**
     * 
     * 使用poi方式生成excel报表 <br>
     * 〈功能详细描述〉
     * 
     * @param exportList:数据列表
     * @param columnNames:字段的列明数组(对应的就是Map中的Key值)
     * @param templateName:Excel模板名称
     * @param fileName:生成的Excel文件名
     * @param index:使用第几个Sheet页
     * @param insertLine:从Excel中的第几行开始插入数据
     * @param request
     * @param response
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static void usePoiExportDatas(List<Map<String, Object>> exportList, String[] columnNames,
            String templateName, String fileName, int index, int insertLine, HttpServletRequest request,
            HttpServletResponse response) {
        // 获取Excel模板文件路径
        String excelModelPath = getExcelModelPath(templateName, request);

        OutputStream os = null;
        InputStream is = null;
        try {
            is = new BufferedInputStream(new FileInputStream(excelModelPath));
            Workbook work = new HSSFWorkbook(is);
            // 得到excel的第index个sheet页
            Sheet sheet = work.getSheetAt(index);

            // 遍历数据集列表,每条记录对应Excel文件中的一行
            for (int i = 0; i < exportList.size(); i++) {
                Map<String, Object> dataMap = exportList.get(i);

                // 生成Excel中的行
                Row row = sheet.createRow(i + insertLine - 1);
                for (int j = 0; j < columnNames.length; j++) {
                    // 生成Excel中的列
                    Cell cell = row.createCell(j);
                    // 为该列赋值
                    cell.setCellValue(MapUtils.getString(dataMap, columnNames[j], ""));
                }
            }

            response.setContentType("application/x-msdownload;");
            response.setHeader("Content-disposition", "attachment; filename="
                    + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
            os = response.getOutputStream();
            work.write(os);
        } catch (IOException e) {
            logger.error("IO异常");
        } finally {
            IOUtils.closeQuietly(os);
            IOUtils.closeQuietly(is);
        }
    }

    private static String getExcelModelPath(String templateName, HttpServletRequest request) {
        StringBuilder filePath = new StringBuilder(50);
        filePath.append(request.getSession().getServletContext().getRealPath("/")).append(File.separator)
                .append("report").append(File.separator).append("template").append(File.separator);
        // Excel模板路径
        String modelFilePath = filePath.toString() + templateName;

        return modelFilePath;
    }

   
分享到:
评论

相关推荐

    Excel导入,导出,模板生成-公共模块整理

    Excel导入,导出,模板生成-公共模块整理

    JAVA项目代码绘制PDF和通过freemarker动态生成PDF

    不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取模板子类。 2. ...

    用POI实现excel表格的定制化和模板化开发

    1. 该工具的目的在于支持excel表格的定制化开发,提供了基本默认样式类、以及公共模板类,加速不同样式表格的生成,很适合表格复杂多变的场景; 2. 数据、样式、excel模板分离,可分别配置,可任意组合复用; 3. ...

    POI导入Excel并返回校验后的错误文件(原样)下载以及校验错误信息,同时加进度条

    会在Excel后面添加一栏错误信息)下载以及页面展示校验错误信息,同时添加导入进度条,提供页面js和css代码,后端controller和service,提供xml模板和Excel模板,由于项目导入地方较多,编写的是公共代码,供多处调用...

    easyuiPoi导出Excel工具类封装(支持合并单元格)

    easyuiPoi 通过模板导出Excel、支持纵向合并单元格(合并重复内容)。压缩包包含公共工具类、示例模板、调用截图。

    Excel的导入导出(员工考勤的复杂处理)

    公司正在使用的员工考勤系统,对打卡机生成的原始数据进行了一系列复杂的处理后生成标准模板。该软件导入Tomcat及能运行。使用了Struts2,框架。对Excel的时间函数进行处理。虽然资源分高了点,但绝对超值,设计公司...

    spring工程application公共配置模板

    通过excel模板(宏)文件,编辑维护springboot工程application.properties配置文件的配置项,并一键生成配置文件。

    EXCEL2007实例教程PPT-自做培训用!目前最全教程!.pptx

    第二节 电子表格的基本操作 (1)工作簿(Workbooks):电子表格软件Excel生成的一个文档文件 工作簿文件的默认扩展名:.xlsx(未启用宏),是基于XML的新的文件格式 启用宏的Excel工作簿文件扩展名:.xlsm 模板文件...

    交友相亲社交网站模板支持手机wap版

    谁适合使用交友系统,交友网站模板? 想建立一个交友,婚恋,征婚网站平台,让更多的人在自己的网站上交友找到配偶或者知已,或者想拥有一套类似世纪佳缘交友网页模板的人。 特色功能: 1、新增第三方合作网站登录...

    asp.net知识库

    使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例072 图像验证码的生成 106 2.6 跳转语句 107 实例073 控制页面中表情图的输出 107 实例074 控制页面中数据的输出数量 108 实例075 动态改变页面中单元格的背景颜色 109 实例076 屏蔽偶数次的数据输出 110 实例...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例072 图像验证码的生成 106 2.6 跳转语句 107 实例073 控制页面中表情图的输出 107 实例074 控制页面中数据的输出数量 108 实例075 动态改变页面中单元格的背景颜色 109 实例076 屏蔽偶数次的数据输出 110 实例...

    Spring中文帮助文档

    11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall...

    seo企业网站cms

    6、公共信息读取效率控制参数、模板调用数据库控制文件(由模板制作者控制)大大提高了系统的运行效率; 7、上传文件夹及文件管理功能,可以轻松管理删除垃圾文件; 8、PHP+MYSQL构架、全站静态功能、系统文件权限...

    Spring API

    11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall...

    php OA 源码 办公自动化源码

    可以通过报表设计器定义报表模板来制作各类报表,报表模板定义时,如Excel一样,可以定义各种样式,通过自定义SQL或向导生成SQL,生成数据源模板。通过报表设计器,可以生成各类复杂的报表。 在报表设计器中设计完成...

    ACReport中国式报表控件2011(Ver2.3)

    13、函数优化,在同一页中如果两个或多个公式有公共子公式,则此公共子公式只会执行一次,例如:有以下两个公式: NumToCnText(sum(DocLines, DocLines.LineTotal)/10000, 1) NumToCnText(sum(DocLines, DocLines....

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 ...

    ASP.NET3.5从入门到精通

    2.5.1 if 语句的使用方法 2.5.2 switch 选择语句的使用 2.6 使用循环语句 2.6.1 for 循环语句 2.6.2 while 循环语句 2.6.3 do while 循环语句 2.6.4 foreach 循环语句 2.7 异常处理语句 2.7.1 throw 异常语句 2.7.2 ...

    50用户在线考试系统

    课程管理员可以预先把试题按照我们提供的EXCEL模板样式输入到EXCEL表格中,等试题积累到一定程度,就可以按照我们的导入程序,把EXCEL试题导入到数据库中。 请以我们提供的模板为基础,不然可能出现异常。 5、...

Global site tag (gtag.js) - Google Analytics