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

生成的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日

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊