命运狂想曲回来了 2022-11-25 20:55 采纳率: 50%
浏览 17
已结题

使用POI读取模板生成多个DOCX文件压缩成zip,解压后不是一个DOCX的word文档

使用POI读取模板生成多个DOCX文件压缩成zip,解压后不是一个DOCX的word文档,而是这几个文件:_rels、docProps、word、[Content_Types]

String templatePath = "D:\\模板.docx";
        Zip zip = new Zip();
        ByteArrayOutputStream byteArrayOutputStream = null;
        Map<Long, List<CadreFamilyMemberRelation>> membersMap = getMembersMap(cadreInformations);
        for (CadreInformationWord cadreInformation : cadreInformations) {
            try {
                XWPFDocument xwpfDocument = getXwpfDocument(cadreInformation, membersMap, templatePath);
                byteArrayOutputStream = new ByteArrayOutputStream();
                xwpfDocument.write(byteArrayOutputStream);
                xwpfDocument.close();
                byteArrayOutputStream.close();
                if (cadreInformations.size() == 1) {
                    return result4Handle.success("导出成功!", Base64.encodeBase64String(byteArrayOutputStream.toByteArray()));
                }
                if (!zip.zip(cadreInformation.getCadreName() + END, byteArrayOutputStream.toByteArray())) {
                    log.warn("导出失败,压缩文件失败");
                    return result4Handle.fail("失败");
                }
            } catch (Exception e) {
                log.warn("导出干部任免表失败");
                return result4Handle.fail("失败");
            }

private XWPFDocument getXwpfDocument(CadreInformationWord cadreInformation,
                                         Map<Long, List<CadreFamilyMemberRelation>> membersMap, String templatePath) throws Exception {
        FileInputStream fileInputStream = new FileInputStream(new File(templatePath));
        XWPFDocument doc = new XWPFDocument(fileInputStream);
        //创建文件对象
        List<XWPFTable> tables = doc.getTables();
        // 第一个表
        List<XWPFTableRow> table1 = tables.get(0).getRows();
        List<XWPFTableRow> table2 = tables.get(1).getRows();
        first(cadreInformation, table1);
        second(cadreInformation, table2, membersMap);
        return doc;
    }

img


怎样能让他解压后是个word文档?

  • 写回答

2条回答 默认 最新

  • 点辰星 2022-11-25 21:04
    关注

    从你解压的结果来看,就是一个docx 文档。
    猜想生成的本身就是一个docx文档,而不是多个docx文档,把.zip扩展名,改成.docx,应该可以直接打开。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月28日
  • 已采纳回答 11月28日
  • 修改了问题 11月25日
  • 修改了问题 11月25日
  • 展开全部

悬赏问题

  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题