java导出word

简介: java导出word

1.使用easyWord

2.模版 .doc文件
image.png
3.maven依赖


com.sushengren
easyword
1.1.3

4.
————————————————
package com.test.domain.word;

import com.sushengren.easyword.annotation.WordProperty;
import jdk.nashorn.internal.objects.annotations.Getter;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/*

  • 导出word
    */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public class Wxdj {

    @WordProperty("wxdjcode")
    private String wxdjcode;

    @WordProperty("deptName")
    private String deptName;

    @WordProperty("policeName")
    private String policeName;

    @WordProperty("ctAjmc")
    private String ctAjmc;

    @WordProperty("policePhone")
    private String policePhone;

    @WordProperty("createdate")
    private String createdate;

}

@ExcelIgnore 隐藏不展示实体类的字段
5.给模版赋值

/*8

 * 下载通知书 模版信息
 * @param ctId
 */
@Override
public void downloadNotice(String ctId, HttpServletRequest request, HttpServletResponse response) throws IOException {
    String path = this.getClass().getResource("/").getPath();
    String rootPath = path.substring(1, path.length());
    //TODO 后续将模版文件写在  sys_config 表中
    String filePath = rootPath.replace("ruoyi-admin/target/classes/", "business/src/main/resources/stencil/wxdj.doc");
    File file = new File(filePath);

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    TbNbgzWxdj nbgzWxdj = tbNbgzWxdjMapper.selectTbNbgzWxdjByCtId(ctId);
    //外协单位-组织信息
    TbNbgzWxdjdata dept = new TbNbgzWxdjdata();
    dept.setCtIdP(ctId);
    dept.setCtFunNo(FunNoConstants.NBGZ_WXDJWXDW_DEPT);
    dept.setCtFunNop(FunNoConstants.NBGZ_WXDJ);
    List<TbNbgzWxdjdata> deptList = tbNbgzWxdjwdataMapper.selectTbNbgzWxdjwdataList(dept);
    List<String> deptNames = deptList.stream().map(TbNbgzWxdjdata::getCtDeptName).collect(Collectors.toList());
    String deptName = String.join(",", deptNames);


    //外协单位人员名称信息
    List<TbNbgzWxdjdata> newPoliceList = new ArrayList<>();
    for (int i = 0; i < deptList.size(); i++) {
        TbNbgzWxdjdata tbNbgzWxdjdata = deptList.get(i);
        //外协单位-人员信息
        TbNbgzWxdjdata police = new TbNbgzWxdjdata();
        police.setCtFunNop(FunNoConstants.NBGZ_WXDJ);
        police.setCtFunNo(FunNoConstants.NBGZ_WXDJWXDW_POLICE);
        police.setCtIdP(deptList.get(i).getCtId());
        List<TbNbgzWxdjdata> policeList = tbNbgzWxdjwdataMapper.selectTbNbgzWxdjwdataList(police);
        if (policeList.size() > 0) {
            tbNbgzWxdjdata.setWxdwPoliceList(policeList);
        }
        newPoliceList.add(tbNbgzWxdjdata);
    }
    nbgzWxdj.setWxdwList(newPoliceList);

    List<TbNbgzWxdjdata> wxdwPoliceList = newPoliceList.get(0).getWxdwPoliceList();
    List<String> policeLists = wxdwPoliceList.stream().map(TbNbgzWxdjdata::getCtQqmjName).collect(Collectors.toList());

    String policeName = String.join(",", policeLists);
    //外协单位人员电话信息
    List<String> policePhoneLists = newPoliceList.stream().map(TbNbgzWxdjdata::getCtQqmjPhone).collect(Collectors.toList());
    String policePhone = String.join(",", policePhoneLists);


    for (int i = 0; i < deptList.size(); i++) {
        TbNbgzWxdjdata tbNbgzWxdjdata = deptList.get(i);
        //外协单位-人员信息
        TbNbgzWxdjdata police = new TbNbgzWxdjdata();
        police.setCtFunNop(FunNoConstants.NBGZ_WXDJ);
        police.setCtFunNo(FunNoConstants.NBGZ_WXDJWXDW_POLICE);
        police.setCtIdP(deptList.get(i).getCtId());
        List<TbNbgzWxdjdata> policeList = tbNbgzWxdjwdataMapper.selectTbNbgzWxdjwdataList(police);
        if (policeList.size() > 0) {
            tbNbgzWxdjdata.setWxdwPoliceList(policeList);
            newPoliceList.addAll(policeList);
        }
    }

    Wxdj wxdj = Wxdj.builder()
            .wxdjcode(ctId)
            .deptName(deptName)
            .policeName(policeName)
            .ctAjmc(nbgzWxdj.getCtAjmc())
            .policePhone(policePhone)
            .createdate(df.format(nbgzWxdj.getDtCreateDate()))
            .build();

    EasyWord.of(file).doWrite(wxdj).toOutputStream(response.getOutputStream());

}
相关文章
|
1月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
117 5
|
2月前
|
缓存 easyexcel Java
Java EasyExcel 导出报内存溢出如何解决
大家好,我是V哥。使用EasyExcel进行大数据量导出时容易导致内存溢出,特别是在导出百万级别的数据时。以下是V哥整理的解决该问题的一些常见方法,包括分批写入、设置合适的JVM内存、减少数据对象的复杂性、关闭自动列宽设置、使用Stream导出以及选择合适的数据导出工具。此外,还介绍了使用Apache POI的SXSSFWorkbook实现百万级别数据量的导出案例,帮助大家更好地应对大数据导出的挑战。欢迎一起讨论!
193 1
|
1月前
|
Java API Apache
|
1月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
41 4
|
2月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
307 1
|
6月前
|
Java
java生成word(使用Poi-tl)
java生成word(使用Poi-tl)
415 0
|
3月前
|
存储 Java
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
52 2
|
4月前
|
XML Java 数据格式
基于Java+freemarker实现动态赋值以及生成Word文档
使用Java和Freemarker技术实现动态数据填充到Word文档模板并生成新的Word文档。
282 0
基于Java+freemarker实现动态赋值以及生成Word文档
|
3月前
|
Java Apache Maven
Java中使用poi+poi-tl实现根据模板导出word文档
这个过程不仅简化了文档生成的工作,而且保证了生成文档的一致性与准确性,特别适合于那些需要生成大量文档的自动化场景。通过以上步骤,Java开发人员可以实现高效、可靠的Word文档导出功能。
1521 0
|
5月前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
312 6