`

生成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 导入、导出、模板生成公共模块整理是指使用 Microsoft.Office.Interop.Excel.dll 库来实现 Excel 文件的导入、导出和模板生成操作。该模块提供了一个单例类 ExcelOperate,用于管理 Excel 文件的操作。 ...

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

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

    .net里导出excel表方法汇总

    使用C#代码生成Excel文件 - **准备工作** - 定义必要的命名空间:`System`、`System.Data`、`Excel`(来自Excel组件)、`System.IO`。 - 创建一个类`OutputExcel`用于处理Excel文件的生成工作。 - **类结构** ...

    vba excel自动生成javabean格式的txt

    3. **生成模板**:脚本基于属性名生成JavaBean模板,包括属性声明、getter和setter方法。 4. **导出为TXT**:生成的JavaBean代码保存为TXT文件,用户可以将其复制到Java项目中,适当调整后编译使用。 这个工具的...

    excel导出公共组件

    5. 调用接口:为了使用这个公共组件,开发者需要调用其提供的API或方法。这些接口可能包括启动导出过程、指定导出数据、定义样式等。调用方式取决于具体的组件设计,可能是同步的(等待导出完成返回结果)或异步的...

    Excel模板学生体温测量登记表.zip

    Excel模板通常设计得直观易用,且具有一定的功能性,如公式计算、数据验证和图表生成等。 关于“学生体温测量登记表.xlsx”这个文件,我们可以预期以下内容: 1. **表头**:模板的第一行可能包括学生的个人信息,...

    Excel模板市公共車船管理處財務狀況.zip

    使用这样的模板,市公共车船管理处能够定期生成财务报告,以满足内部管理需求和外部监管要求。同时,通过Excel的数据分析功能,可以进行趋势分析、成本控制和预算规划,为决策者提供有力的支持。

    MFC Excel类封装成库DLL(在静态库中使用 MFC)

    1. 创建MFC DLL项目:在Visual Studio中选择“新建项目”,然后选择MFC DLL模板,这将生成一个包含MFC支持的DLL工程。 2. 实现Excel功能:在DLL项目中,开发者会创建一个或多个类,这些类可能包含对Excel COM接口...

    Excel模板体温监测表.zip

    10. **宏(Macros)**:虽然不是所有Excel模板都会包含宏,但某些复杂的模板可能会有宏来自动化数据处理或报告生成。 使用这样的Excel模板,用户可以有效地组织和分析体温监测数据,同时减少了手动记录和计算的工作...

    Excel模板马尔可夫预测法.zip

    为了使非专业统计背景的用户也能轻松地应用这种预测方法,"Excel模板马尔可夫预测法.zip"的推出无疑为这一需求提供了便利。 马尔可夫预测法源自俄罗斯数学家安德烈·马尔可夫的工作,是一种基于概率的预测技术。它...

    ABAP2XLSX+封装EXCEL 打印的公用类

    在"ABAP2XLSX+封装EXCEL 打印的公用类"的场景中,我们可能涉及到的是一个专门设计的公共类(ZCL_COMMON),它利用了ABAP2XLSX的功能,并进一步封装了生成和打印Excel文件的逻辑,以便在不同的业务场景下重复使用。...

    Excel模板考场桌面标签.zip

    总结来说,利用Excel模板制作考场桌面标签是一种高效且灵活的方法。它不仅可以帮助我们快速生成和打印标签,还可以根据需要进行个性化设计。通过熟练掌握Excel的相关功能,我们可以更好地组织和管理考试流程,确保...

    springboot整合easyexcel实现excel文件上传解析,下载导出简单实例.zip

    best2018的gravatar头像 best20182022-10-17 14:55:20原证springboot整合easyexcel实现excel文件上传解析,下载导出简单实例 ...用于上传解析的Excel模板文件位于项目根目录file文件夹下,名称为Test.xlsx

    C#导出到WORD Excel的公用方法

    2. 在项目中编写导出到Word和Excel的公共类和方法。 3. 编译项目,生成DLL文件。 4. 在其他项目中引用这个DLL,可以直接调用其中的方法。 为了使这些公用方法易于使用,可以考虑设计一个统一的接口,比如`...

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

    这个库主要适用于那些需要在Web应用中生成Excel报告或导出数据的场景,比如数据分析、报表生成等。EasyUIPoI的名字可能来源于流行的前端框架EasyUI,但其核心功能是后端的Excel处理。 Apache POI是Apache软件基金会...

    Excel模板事业单位收入支出表.zip

    在描述中提到的“Excel模板事业单位收入支出表.zip”,进一步确认了这是一个使用Excel软件创建的模板,可能包含多个工作表,分别用于不同的财务记录和报告,例如月度、季度或年度收支汇总,或者按项目分类的收支明细...

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

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

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

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

    VB生成标准DLL的方法,VB制作标准DLL

    以下是一份详细的知识点解析,涵盖了VB生成标准DLL的方法,以及如何使用和管理这些DLL。 1. **DLL(动态链接库)**:DLL是一种共享库,它包含可由多个程序同时使用的代码和数据。这样可以减少内存占用,提高系统...

    Excel模板各类体温登记表.zip

    在Excel中创建和使用体温登记表是数据管理和追踪的重要手段,尤其在公共卫生事件期间,如COVID-19等。这份"Excel模板各类体温登记表.zip"包含了一个名为"各类体温登记表.xls"的文件,旨在提供多种场景下的体温记录...

Global site tag (gtag.js) - Google Analytics