夜敲人 2022-03-24 13:33 采纳率: 50%
浏览 145
已结题

生成的word文档无法打开

问题遇到的现象和发生背景
代码:


public void exportWord(List<ContractPo> contractPos, HttpServletResponse response) {
    ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    URL resource = classLoader.getResource("6.doc");
    String templatePath = resource.getPath();
    ArrayList<Map<String, String>> list_data1 = new ArrayList<>();
    Map<String, String> temp = new HashMap<>();
    for (ContractPo contractPo : contractPos) {
        temp = new HashMap<>();
        temp.put("ContractNo", contractPo.getContractNo());
        temp.put("GranterName", contractPo.getGranterName());
        if (null != contractPo.getClinchTotleArea()) {
            temp.put("ClinchTotleArea", contractPo.getClinchTotleArea().toString());
        }
        temp.put("GrantePhone", contractPo.getGrantePhone());
        if (null != contractPo.getUserId()) {
            temp.put("UserId", contractPo.getUserId().toString());
        }
        list_data1.add(temp);
    }
   List<Map<String, String>> list_data =  list_data1.subList(0, 9);

    Export2(list_data, templatePath);



}
public boolean Export2(List<Map<String, String>> list_data,String templatePath) {
    boolean result = false;
    FileInputStream in = null;
    HWPFDocument document = null;
    try {
        File file = new File("D:\\word\\test.doc");
        FileOutputStream out = new FileOutputStream(file);
        in = new FileInputStream(templatePath);
        document = new HWPFDocument(in);
        Range range = document.getRange();
        //baoge
        TableIterator tableIter = new TableIterator(range);
        Table table;
        TableRow row;
        while (tableIter.hasNext()) {
            table = tableIter.next();
            int rowNum = table.numRows();
            for (int i=0, j=2; i<list_data.size()&&j<rowNum; i++,j++) {
                row = table.getRow(j);
                if(null!=list_data.get(i).get("ContractNo")){
                    row.getCell(0).insertBefore(list_data.get(i).get("ContractNo"));
                }
                if(null!=list_data.get(i).get("GranterName")){
                    row.getCell(2).insertBefore(list_data.get(i).get("GranterName"));
                }
                if(null!=list_data.get(i).get("ClinchTotleArea")){
                    row.getCell(3).insertBefore(list_data.get(i).get("ClinchTotleArea"));
                }
                if(null!=list_data.get(i).get("GrantePhone")){
                    row.getCell(4).insertBefore(list_data.get(i).get("GrantePhone"));
                }
                if(null!=list_data.get(i).get("UserId")){
                    row.getCell(5).insertBefore(list_data.get(i).get("UserId"));
                }


            }
        }
        document.write(out);
        out.close();
    }catch (IOException e1) {
        e1.printStackTrace();
        log.error(e1.toString());
    }
    return result;
}
运行结果及报错内容 :为什么无法打开生成的文档
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 荒野漫步者 2022-03-24 13:47
    关注

    有可能是模板出问题了,在模板出问题的情况下会造成打不开生成文件的情况,建议换个模板试一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 已采纳回答 4月15日
  • 创建了问题 3月24日

悬赏问题

  • ¥15 主机可以ping通路由器但是连不上网怎么办
  • ¥15 数据库一张以时间排好序的表中,找出多次相邻的那些行
  • ¥50 关于DynamoRIO处理多线程程序时候的问题
  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥20 双系统开机引导中windows系统消失问题?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方
  • ¥15 关于生产日期批次退货退款,库存回退的问题
  • ¥15 手机应用的时间可以修改吗
  • ¥15 docker 运行OPEN-webui异常