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

使用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日
  • 展开全部

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。