怎么新建html文件-Java技术:SpringBoot集成FreeMarker生成word文件

2023-09-01 0 9,212 百度已收录

明天给大家分享一下如何使用SpringBoot集成FreeMarker模板引擎生成word文件。 如果你有兴趣的话怎么新建html文件,可以学习一下。 完整源码地址在文末。 欢迎大家互相交流!

1.什么是FreeMarker?

FreeMarker是一个开源模板引擎:它是一种基于模板和动态填充数据的通用技术,可用于动态渲染和生成输出文本(HTML网页、Word文档、电子邮件、配置文件、源代码等) 。

模板被编译为 FreeMarkerTemplateLanguage (FTL):它是一种简单的专用语言,而不是像 PHP 这样成熟的编程语言。 因此,它主要关注如何解释数据。 具体来说,需要显示什么数据怎么新建html文件,需要成熟的编程语言(Java、C#、Python)等。

FreeMarker原理图如下:

二、示例代码 1、导入freemarker依赖包

怎么新建html文件-Java技术:SpringBoot集成FreeMarker生成word文件



    org.springframework.boot
    spring-boot-starter-freemarker

2.在application.yml中配置freemarker

freemarker:
  cache: false #是否启用缓存,开发环境不建议启动因为涉及经常修改模板调试
  settings:
    classic_compatible: true
  suffix: .html #一般格式tpl居多
  charset: UTF-8
  template-loader-path: classpath:/templates/ #模板路径,一般都是这个

3.创建一个新的IExportService.java类

package com.springboot.email.email.service;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
public interface IExportService {
    /**
     * 导出word文件到指定目录
     */
    void exportDocFile(String fileName, String tplName, Map data) throws Exception;
    /**
     * 导出word文件到客户端
     */
    void exportDocToClient(HttpServletResponse response, String fileName, String tplName, Map data) throws Exception;
}

4、新建IExportService.java套接字实现类ExportServiceImpl.java

package com.springboot.email.email.service.impl;
import com.springboot.email.email.service.IExportService;
import freemarker.template.Template;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Map;
@Service
public class ExportServiceImpl implements IExportService {
    private String encoding;
    private String exportPath = "D:\export\";
    @Autowired
    private FreeMarkerConfigurer freeMarkerConfigurer;
    public Template getTemplate(String name) throws Exception {
        return freeMarkerConfigurer.getConfiguration().getTemplate("test.html");
    }
    /**
     * 导出本地文件到指定的目录
     */
    @Override
    public void exportDocFile(String fileName, String tplName, Map data) throws Exception {
        //如果目录不存在,则创建目录
        File exportDirs = new File(exportPath);
        if (!exportDirs.exists()) {
            exportDirs.mkdirs();
        }
        Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(exportPath + fileName), encoding));
        getTemplate(tplName).process(data, writer);
    }
    /**
     * 导出word文件到浏览器客户端
     */
    @Override
    public void exportDocToClient(HttpServletResponse response, String fileName, String tplName, Map data) throws Exception {
        response.reset();
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/msword");
        response.setHeader("Content-Disposition", "attachment; filename=" +  URLEncoder.encode(fileName , "UTF-8"));
        // 把本地文件发送给客户端
        Writer out = response.getWriter();
        Template template = getTemplate(tplName);
        template.process(data, out);
        out.close();
    }
}

5、新建模板文件test.html

具体文件请参考源码和模板文件制作格式。 新建一个word文件并调整格式→另存为xml格式的文件→部分调整文件循环标记→然后将文件另存为html格式并放置到项目中。

有什么不清楚的地方可以留言沟通。

6.新建测试类ExportController.java

@RestController
@RequestMapping("/export")
public class ExportController {
    @Autowired
    private IExportService exportService;
    @RequestMapping(value = "/testWord", method= RequestMethod.GET)
    public void exportWord(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String fileName = "测试word导出.doc"; //文件名称
        // 设置头部数据
        Map dataMap = new HashMap();
        dataMap.put("name","小明");
        dataMap.put("regAddress","苏州");
        // 设置表格数据
        List list=new ArrayList();
        ScoreVo vo1=new ScoreVo();
        vo1.setCourseName("英语");
        vo1.setScore(95);
        vo1.setRank(3);
        ScoreVo vo2=new ScoreVo();
        vo2.setCourseName("数学");
        vo2.setScore(100);
        vo2.setRank(1);
        list.add(vo1);
        list.add(vo2);
        dataMap.put("courseList",list);
        exportService.exportDocToClient(response, fileName, "test.html", dataMap);
    }
}

访问地址::8080/export/testWord

导入文件的效果:

吉泰地址:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 html 怎么新建html文件-Java技术:SpringBoot集成FreeMarker生成word文件 https://www.wkzy.net/game/185778.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务