Utilisez freemarker pour exporter le téléchargement du modèle Word

Table des matières

1. Importez le package jar

2. Créez un modèle

3. Application des codes

4. Testez

1. Importez le package jar

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>

2. Créez un modèle

  1. Remplissez le modèle avec les paramètres dynamiques personName, phone, address

  1. Enregistrez le fichier au format xml

3. Utilisez le bloc-notes ou d'autres outils de texte pour ouvrir le fichier au format xml, recherchez les paramètres que vous venez de saisir et placez les paramètres dans ${}

4. Après l'enregistrement, modifiez le suffixe du fichier directement en ftl

Même si le modèle est créé, écrivez simplement le code plus tard

3. Application des codes

couche de contrôle

package com.xinke.sunshine_ebid.webapp;

import com.xinke.sunshine_ebid.service.TestService;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

@CrossOrigin
@RestController
@RequestMapping(value = "/Test")
public class TestController {
    @Resource
    private TestService testService;

    /**
     * 使用freemarker导出word模板
     * @param response
     * @throws Exception
     */
    @GetMapping("/test2")
    public void recordSheetWord2(HttpServletResponse response) throws Exception{
        testService.test2(response);
    }
}

couche logique métier

package com.xinke.sunshine_ebid.service;

import com.xinke.sunshine_ebid.common.utils.CustomXWPFDocument;
import com.xinke.sunshine_ebid.common.utils.WordUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;

@Service
public class TestService {

    public void test2(HttpServletResponse response) throws Exception{
        Map<String, Object> params = new HashMap<>();

        params.put("personName","测试姓名");
        params.put("phone","18888888888");
        params.put("address","凡尔赛");

        // 需要设置的文件名
        String fileName = "文件名称";
        // 模板的文件名
        String filePath = "test2.ftl";
        response.setContentType("application/msword");
        response.setCharacterEncoding(StandardCharsets.UTF_8.name());
        response.setContentType("application/x-zip-compressed");
        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8") + ".docx");

        //创建配置实例
        Configuration configuration = new Configuration();
        //设置编码
        configuration.setDefaultEncoding("UTF-8");
        // 模板所在文件位置
        configuration.setDirectoryForTemplateLoading(new File("fileRecord/template/word"));
        //获取模板
        Template template = configuration.getTemplate(filePath,"UTF-8");
        // 也可以修改成生成文件存放在本地
        Writer out = response.getWriter();
        //生成文件
        template.process(params, out);
        //关闭流
        out.flush();
        out.close();

    }
}

Exemple d'emplacement de stockage du modèle

4. Testez

Appelez l'interface locale pour tester : localhost:port number/Test/test2

Exportation réussie

Je suppose que tu aimes

Origine blog.csdn.net/GuaGea/article/details/131420632
conseillé
Classement