栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【java】生成【word】的后端接口-- java生成Word的第二步

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【java】生成【word】的后端接口-- java生成Word的第二步

1. 放置模板

2. 后端代码
	@PostMapping("downloadWord")
    public ResultVO downloadWord(@RequestBody Map map, HttpServletRequest request){
        Map dataMap = getDataMap(map);
        //生成文件
        String path = WordUtils.createWord(dataMap,"研修培训项目实施方案模板1.ftl", "研修培训项目实施方案模板"+System.currentTimeMillis()+".doc");
        String base64 = WordUtils.downLoadBase64( path,request);
        return new ResultVO().addData("base64",base64);
    }
1. 获取数据并封装数据
private Map getDataMap(@RequestBody Map map) {
        //根据统一社会信用代码查询出所有的数据
        String tyshxydm = (String) map.get("tyshxydm");
        Map pxbMap = null;
        
        int page = (int) map.get("page");
        int rows = (int) map.get("rows");
        //查询单位信息
        GyQyxx gyQyxx = gyQyxxService.selectById(tyshxydm);
        //查询培训班信息
        String pxbid = (String) map.get("pxbid");
        GyPxxm gyPxxm = new GyPxxm();
        gyPxxm = gyPxxmService.selectById(pxbid);
        //查询授课教师信息
        List gyPxxmSkzjList = gyPxxmSkzjService.queryList(pxbid, page, rows);
//        List gyPxxmSkzjList =(List) skzjMap.get("list");
        //查询研修内容
        List yxnrList = gyPxxmYxnrService.queryList(pxbid, page, rows);
//        List yxnrList = (List) yxnrMap.get("list");

        //装配数据
        Map dataMap = new HashMap();
//        这是在根据模板中的字段进行值的封装
        dataMap.put("y", gyPxxm.getRkrq().substring(0, 4));
        dataMap.put("m", gyPxxm.getRkrq().substring(4, 6));
        dataMap.put("d", gyPxxm.getRkrq().substring(6, 8));
        dataMap.put("yyxmmc", gyPxxm.getYyxmmc());
        dataMap.put("zymc", gyPxxm.getZymc());
        dataMap.put("yrdwmc", gyQyxx.getYrdwmc());
        dataMap.put("yxbdd", gyPxxm.getYxbdd());
        dataMap.put("xyrs", gyPxxm.getXyrs());
        dataMap.put("xyly", gyPxxm.getXyly());
        dataMap.put("yxmdhzy", gyPxxm.getYxmdhzy());
        dataMap.put("pxtjbzcs", gyPxxm.getPxtjbzcs());
        dataMap.put("yxsxjfys", gyPxxm.getYxsxjfys());
        dataMap.put("pxjgdz", gyPxxm.getPxjgdz());
        dataMap.put("pxjglxr", gyPxxm.getPxjglxr());
        dataMap.put("pxjgbgdh", gyPxxm.getPxjgbgdh());
        dataMap.put("pxjgsj", gyPxxm.getPxjgsj());
        dataMap.put("pxjgcz", gyPxxm.getPxjgcz());
        dataMap.put("pxjgyx", gyPxxm.getPxjgyx());

        List gyPxxmSkzjs = new ArrayList();
        List gyPxxmYxnrs = new ArrayList<>();

        for (GyPxxmSkzj item : gyPxxmSkzjList) {
            SkzjWordDTO skzjWordDTO = new SkzjWordDTO();
            skzjWordDTO.setSkzjnl(item.getSkzjnl());
            skzjWordDTO.setSkzjxm(item.getSkzjxm());
            skzjWordDTO.setSkzjgzdw(item.getSkzjgzdw());
            skzjWordDTO.setSkzzcjndj(ConstCode.jndjType.get(item.getSkzzcjndj()));
            gyPxxmSkzjs.add(skzjWordDTO);
        }

        dataMap.put("skzj", gyPxxmSkzjs);
        AtomicInteger zks = new AtomicInteger();
        for (GyPxxmYxnr item : yxnrList) {
            YxnrWordDTO yxnrWordDTO = new YxnrWordDTO();
            yxnrWordDTO.setKs(item.getKs());
            yxnrWordDTO.setPxnr(item.getPxnr());
            yxnrWordDTO.setPxxs(item.getPxxs());
            yxnrWordDTO.setSkzjxm(item.getSkzjxm());
            gyPxxmYxnrs.add(yxnrWordDTO);
            int i = Integer.parseInt(item.getKs());
            zks.addAndGet(i);
        }
        dataMap.put("yxnr", gyPxxmYxnrs);
        dataMap.put("zks", zks);
        dataMap.put("jykh", gyPxxm.getJykh());
        return dataMap;
    }
2. 生成word文档
public static String createWord(Map dataMap, String templateName, String fileName) {
        String filePath = null;
        //创建配置实例 
        Configuration configuration = new Configuration(new Version("2.3.28"));
        //设置编码
        configuration.setDefaultEncoding("UTF-8");
        //ftl模板文件
        configuration.setClassForTemplateLoading(WordUtils.class,"/template");
        try {
            String path ="E:/files/";  //本地开发环境
            //获取模板
            Template template = configuration.getTemplate(templateName);
            String fname = fileName;
            File outFile = new File(path+fname);
            filePath = path+fname;
            System.out.println(filePath);
            if (!outFile.getParentFile().exists()){
                outFile.getParentFile().mkdirs();
            }
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), StandardCharsets.UTF_8));
            template.process(dataMap, out);
            out.flush();
            out.close();
        }catch (Exception e){
            log.error("导出word文档出错", e);
            throw e;
        }finally {
            return filePath;
        }
    }
3. 将word文档转换为base64
public static String downLoadBase64(String filePath,HttpServletRequest request) {
        System.out.println("filePath------------------" + filePath);
        String base64 = null;

        try {
            //开始时间
            long old = System.currentTimeMillis();
            //获取文件
            File file = new File(filePath);
            if (!file.exists()) {
                return null;
            }
            //获取文件流
            FileInputStream in = new FileInputStream(file);
            //转base64
            byte[] bytes = new byte[(int)file.length()];
            in.read(bytes);
            base64 = Base64.getEncoder().encodeToString(bytes);
            in.close();

            //结束时间
            long now = System.currentTimeMillis();
            System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");

            file.delete();
        } catch (Exception e) {
            log.info("word文件下载异常");
            e.printStackTrace();
        }
        return base64;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号