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

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

    悬赏问题

    • ¥50 burgers方程求逆
    • ¥15 matlab最小二乘法拟合非线性曲线提问
    • ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
    • ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
    • ¥30 各位help写一下代码
    • ¥15 在运行SDEdit模型下载不了
    • ¥15 求51控制l298n驱动的小车中超声波避障怎么写
    • ¥15 电脑连上WIFI却用不了
    • ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
    • ¥15 hyper-v出现的问题