首页 > 编程语言 >java根据模板excel导出pdf和excel (easypoi)示例

java根据模板excel导出pdf和excel (easypoi)示例

时间:2022-10-13 17:56:12浏览次数:57  
标签:map java 示例 excel 镇级 模板 response 成本

/**
     * 下载带模板的excel
     * @param response
     * @param map   数据map key需与模板中对应
     * @param templateUrl       模板excel路径
     * @param titleName 标题名字
     */
    public static void getExcelPlus(HttpServletResponse response, HashMap<String,Object> map, String templateUrl, String titleName) {
        //取到要导出的模板
        TemplateExportParams params;
        //成本报表用电量成本
        params = new TemplateExportParams(templateUrl);
        Workbook workbook = ExcelExportUtil.exportExcel(params, map);
        ServletOutputStream out = null;
        String fileName = titleName + ".xlsx";
        //防止中文乱码
        String fileNameUrl;
        try {
            fileNameUrl = URLEncoder.encode(fileName, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        try {
            //流的形式传输数据
            response.setHeader("content-type", "application/octet-stream");
            //防止中文乱码
            response.setHeader("content-disposition", "attachment;filename=" + fileNameUrl + ";" + "filename*=utf-8''" + fileNameUrl);
            out = response.getOutputStream();
            workbook.write(out);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != out) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
/**
     *  下载带excel模板的pdf
     * @param response
     * @param map   数据map key需与模板中对应
     * @param templateUrl       模板excel路径
     */
    public static void getPdfReportPlus(HttpServletResponse response, HashMap<String,Object> map, String templateUrl) {
        //取到要导出的模板
        TemplateExportParams params;
        //成本报表用电量成本
        params = new TemplateExportParams(templateUrl);
        Workbook workbook = ExcelExportUtil.exportExcel(params, map);
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        //将excel文件写入到新的输出流
        try {
            workbook.write(outputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //将字节数组放置到内存里面
        ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
        com.spire.xls.Workbook workbook1 = new com.spire.xls.Workbook();
        workbook1.loadFromStream(inputStream);
        //pdf 自适应屏幕大小
        workbook1.getConverterSetting().setSheetFitToWidth(true);
        //通过流的形式输出保存
        try {
            workbook1.saveToStream(response.getOutputStream(), FileFormat.PDF);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

 

TownDrugCostReportVO townDrugCostReportVO = townDrugCostsReportService.drugCosts(dto);
        HashMap<String, Object> map = JSONObject.parseObject(JSONObject.toJSONString(townDrugCostReportVO), HashMap.class);
        List<TownDrugCostReportVO.Details> detailsList = JSONObject.parseArray(JSONObject.toJSONString(map.get("detailsList")), TownDrugCostReportVO.Details.class);
        //序号
        int id = 1;
        for (TownDrugCostReportVO.Details details : detailsList) {
            details.setId(id++ + "");
        }
        map.put("detailsList", detailsList);
        switch (dto.getDownLoadType()) {
            case 1:
                if(dto.getType() == 1) {
                    PdfUtil.getPdfReportPlus(response, map, "static/template/village/镇级成本报表药剂成本-月.xlsx");
                    break;
                }else if (dto.getType() == 2) {
                    PdfUtil.getPdfReportPlus(response, map, "static/template/village/镇级成本报表药剂成本-季.xlsx");
                    break;
                }else if (dto.getType() == 3) {
                    PdfUtil.getPdfReportPlus(response, map, "static/template/village/镇级成本报表药剂成本-年.xlsx");
                    break;
                }
            case 2:
                if(dto.getType() == 1) {
                    ExcelUtil.getExcelPlus(response, map, "static/template/village/镇级成本报表药剂成本-月.xlsx", "镇级药剂月成本报表");
                    break;
                }else if (dto.getType() == 2) {
                    ExcelUtil.getExcelPlus(response, map, "static/template/village/镇级成本报表药剂成本-季.xlsx", "镇级药剂季成本报表");
                    break;
                }else if(dto.getType() == 3) {
                    ExcelUtil.getExcelPlus(response, map, "static/template/village/镇级成本报表药剂成本-年.xlsx", "镇级药剂年成本报表");
                    break;
                }
        }

 

标签:map,java,示例,excel,镇级,模板,response,成本
From: https://www.cnblogs.com/gujiajie/p/16789105.html

相关文章

  • java并发之volatile
    java并发围绕原子性、可见性和有序性展开。volatile可以保证可见性。在说volatile前,需要了解几个概念。1、JMM(javamemorymodel)JMM是个抽象的概念,他是java对底层操作系......
  • 《大话设计模式 Java溢彩加强版》相关主题
    《大话设计模式Java溢彩加强版》读者须知     《大话设计模式Java溢彩加强版》在2022年10月在各大网上书店中有售!源代码与课件下载 《大话设计模式Java溢彩......
  • SuyaUi接口调用示例
    向保管箱投放物品insertinto__Suya_Ui_Center_Tab_Box_Datavalues(@CharID,@Type,@Name,@Code,@Count,@From,@Reason)@CharID必填@CharID@Type......
  • python将dict导出为Excel
    fromxlsxwriterimportWorkbookplayers=[{'dailyWinners':3,'dailyFree':2,'user':'Player1','bank':0.06},{'dailyWinners':3,'dailyFree':2,'user':'Play......
  • Java并发(线程状态、线程调度、线程同步)
    Java并发(线程状态、线程调度、线程同步)线程状态​ 线程共有5种状态,在特定情况下,线程可以在不同的状态之间切换。5种具体状态创建状态:实例化一个新的线程对象,还未启......
  • Java并发(进程、线程、多线程,使用)
    Java并发(进程、线程、多线程,使用)进程和线程定义进程:进程是计算机正在运行的一个独立的应用程序。线程:线程是组成进程的基本单位,可以完成特定的功能,一个进程是由一个......
  • excel 处理
    只能处理.xlsx格式的excel依赖包安装pipinstallopenpyxl==3.0.10封装常用方法点击查看代码importfunctoolsfromtypingimportMapping,Listimportopenpyxl......
  • ajax+javascript+tp搜索页面跳转
      搜索页面代码:<formclass="a"action="/news/search.html"method="get"role="form"id="searchform"><divclass="form-group"><inputtype="tex......
  • 【JS】167-JavaScript设计模式——装饰者模式
    四、装饰者模式(DecoratorPattern)1.概念介绍装饰者模式(DecoratorPattern):在不改变原类和继承情况下,动态添加功能到对象中,通过包装一个对象实现一个新的具有原对象相同接口......
  • 【JS】169-JavaScript设计模式——外观模式
    六、外观模式(FacadePattern)1.概念介绍外观模式(FacadePattern) 是一种简单又常见的模式,它为一些复杂的子系统接口提供一个更高级的统一接口,方便对这些子系统的接口访问......