Java는 단어 템플릿을 사용하여 단어 파일을 생성합니다(SpringBoot 사용 가능).

Java는 단어 템플릿을 사용하여 단어 파일을 생성합니다(SpringBoot 사용 가능).

1. 원리

작성된 단어 문서 템플릿을 사용하여 문서 필드에 작성된 내용을 쿼리하고 문서 필드에서 교체해야 하는 템플릿을 교체한 다음 새 단어 템플릿을 생성합니다.


템플릿: 텍스트
여기에 이미지 설명 삽입
생성기 효과로 템플릿에서 "${}"를 사용하여 교체 패딩을 변경합니다.
여기에 이미지 설명 삽입

둘, 코드

자바 코드

public void downloadWord(Map<String, String> contentMap, String fileName) {
    
    
        String tmpFile = "static/doc/ar_template.doc";
        String fileType = ".doc";
        InputStream inputStream = EconomicPersonnelService.class.getClassLoader().getResourceAsStream(tmpFile);//获取模板的inputstream
        //InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(tmpFile);
        HWPFDocument document = null;
        try {
    
    
            document = new HWPFDocument(inputStream);
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        // 读取文本内容
        Range bodyRange = document.getRange();
        // 替换内容
        Iterator iter = contentMap.entrySet().iterator();
        while (iter.hasNext()) {
    
    
            Map.Entry entry = (Map.Entry) iter.next();
            Object key = entry.getKey();
            Object value = entry.getValue();
            System.out.println(key);
            System.out.println(value);
        }
        for (Map.Entry<String, String> entry : contentMap.entrySet()) {
    
    
            bodyRange.replaceText("${" + entry.getKey() + "}", entry.getValue());

        }

        //导出到文件
        try {
    
    
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            document.write(byteArrayOutputStream);
            String path = Thread.currentThread().getContextClassLoader().getResource("").getPath() + "static/doc/";//获取resource下static/doc/的路径
            OutputStream outputStream = new FileOutputStream(path + fileName + fileType);//路径+文件名+后缀
            outputStream.write(byteArrayOutputStream.toByteArray());//生成写入
            outputStream.close();//关闭输出流
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }

    }

프런트엔드 매개변수 전달

 $.ajax({
    
    
                url: MODULE_PATH2 + '/downloadWord',
                dataType: 'json',
                data: {
    
    
                    "dwmc": data.dwmc,
                    "leader": data.leader,
                    "auditors": data.auditors,
                    "t_date_start": data.t_date_start,
                    "t_date_end": data.t_date_end,
                    "nowDate": data.nowDate,
                    "nowDateAdd": data.nowDateAdd,
                    "position": data.position,
                    "fileName": "手动表单查询涵" //根据模板生成的word文档名字
                },

여기에 이미지 설명 삽입
레이블 앞의 "키" 값은 "${}" 템플릿에 채워진 필드와 동일해야 합니다.

Supongo que te gusta

Origin blog.csdn.net/qq_45844443/article/details/118107782
Recomendado
Clasificación