使用freemarker导出excel,wps能打开,office打不开问题

问题描述

根据项目需求,需要导出excel,选择使用freemarker.在做模板的时候,选择的wps,因为office另存为xml文件,还要再修改一次,比较麻烦,但是最后导出excel时,遇见一个问题,wps能打开,office打开报错.
在这里插入图片描述

解决问题

1)因为我在写excel模板时,用的是.xls后缀,最后导出又写的是.xlsx后缀,这是其中一个问题,需要修改导出也为.xls
在这里插入图片描述

2)修改之后再次选择使用office打开,点击"是",发现报错了
在这里插入图片描述

3)最开始的时候没有注意这个错误日志,然后自己找错误,找了很久,浪费了很多时间,其实可以打开这个错误日志.
在这里插入图片描述

4)日志里面说的很清楚,错误的地方和值,然后只需要使用记事本或者其它工具打开,然后搜索找到对应的地方,修改模板,再次导出就可以打开.
在这里插入图片描述
一般遇见的错误是:ss:ExpandedColumnCount ss:ExpandedRowCount index等,行,列,合并,等信息和生产的数量不匹配,可以在模板里面动态添加

例如:

ss:ExpandedRowCount="${sheetList?size}"

修改完错误,再次导出,使用office打开,就没问题了.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您可以使用Freemarker模板引擎来导出Excel文件。以下是一些步骤和示例代码来实现这个过程: 1. 首先,确保您的项目中包含了Freemarker的依赖。 2. 创建一个模板文件,其中定义了要导出Excel的数据格式和布局。例如,您可以使用FreeMarker的标记语法来创建表格、行和单元格。 3. 在您的Java代码中,加载并解析该模板文件。您可以使用Freemarker提供的Configuration类来完成此操作。 示例代码: ```java // 导入 Freemarker 相关的类 import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; // 创建 Configuration 对象,并设置模板文件所在的目录 Configuration configuration = new Configuration(Configuration.VERSION_2_3_30); configuration.setClassForTemplateLoading(YourClassName.class, "/templates"); // 加载模板文件 Template template = configuration.getTemplate("excel_template.ftl"); // 创建一个数据模型对象,用于填充模板中的数据 Map<String, Object> dataModel = new HashMap<>(); dataModel.put("dataList", yourDataList); // yourDataList 是要导出的数据列表 // 创建一个 Writer 对象,用于将生成的 Excel 内容写入到文件或输出流中 Writer writer = new FileWriter(new File("output.xls")); // 使用模板和数据模型生成 Excel 文件 try { template.process(dataModel, writer); } catch (TemplateException e) { e.printStackTrace(); } // 关闭 Writer 对象 writer.close(); ``` 在上面的示例中,您需要提供一个模板文件(`excel_template.ftl`)来定义导出Excel文件的格式。您可以在模板文件使用FreeMarker的标记语法来创建表格、行和单元格,并使用数据模型中的数据填充相应的位置。 请注意,您需要将模板文件放置在项目的 `resources/templates` 目录下(或者根据实际情况进行调整),并且确保您的数据模型(`yourDataList`)中包含要导出的数据。 希望这可以帮助到您!如果有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值