java导出复杂excel表格_java使用freemarker导出复杂的excel表格

正常导出excel表格使用的poi,但是导出复杂的excel有点困难,但是可以使用freemaker模板来导出复杂的excel。

都是先生成一个Excel表格的模板,最好是增加一行数据。具体看图里面的步骤。

729871126d04d7322b3d186e9e401b93.png

项目整体结构

cf12a2ec02957099d7e18635a23606b2.png

下面就直接看代码

public class Data {

//代码复制之后直接就可以运行了

public static void main(String[] args) {

demo();

}

public static void demo() {

// 项目下的template路径

String path = new File("").getAbsolutePath() + "\\template";

Map map = new HashMap();

// 模板所在的路径

map.put("tempFoldPath", path);

// 生成的路径

map.put("file", path + "/采购订单.xls");

// 模板名称

map.put("tampPath", "采购订单.ftl");

// 最后生成的表格的名称

map.put("excelName", "采购订单-" + "Demo" + ".xls");

// 封装数据

Map exlParam = new HashMap<>();

exlParam.put("findList", new Data().list());

// 调用方法,返回浏览器访问的地址

String downloadUrl = ExportExcelUtil.exportExcel(map, exlParam);

}

// 自己造假数据,正常来说都是从数据库查询出来拼装数据的

public List list() {

List purbillList = new ArrayList<>();

purbillList.add(new Purbill("1", "2", "名称", "采购名称", "规格参数", "参数指标", "场地", "10吨", 10, 20.2, 220.2, "品牌"));

return purbillList;

}

}

class Purbill {

private String bidId;

private String billno;

private String categoryName;

private String purname;

private

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaFreemarker是目前Web开发最常用的工具之一,其中Freemarker是一款强大的模板引擎,能够自动生成多个相同结构的表格。在进行这样的导出操作时,我们可以先设计表格的格式和结构,然后通过Java的循环机制,根据数据的个数和需要导出表格数量,自动生成对应的表格,同时填充相应的数据。 具体来说,我们可以采用Freemarker的Template模板、Environment环境和TemplateMethodModelEx接口等,将数据和导出模板进行绑定并且实现代码的逻辑处理。在模板中,我们可以使用foreach指令实现数据的复制和表格的迭代输出,同时使用新的变量名来指向每一次循环的字段,从而保证了多个表格进行循环迭代时的数据独立性。同时,我们可以在每个表格的边缘处添加一条线条,更好地区分各个表格,提高观感体验。 总体上来看,使用JavaFreemarker来循环导出多个相同结构的表格,需要我们熟悉模板引擎的使用方法,同时还需要考虑到数据的处理和表格的美化等细节问题。掌握这些技能,对于我们进行数据分析、报表生成以及表格导出等任务都是非常有帮助的。 ### 回答2: Java FreeMarker 是一款模板引擎,可以通过模板文件生成动态内容。如果要循环导出多个相同结构的表格,可以使用 FreeMarker 的循环语句和表格标签来实现。 首先,准备一个模板文件,模板文件中包含一个表格标签和一个循环语句,循环语句用于循环生成多个表格。例如: ```html <table> <thead> <tr> <th>姓名</th> <th>年龄</th> </tr> </thead> <tbody> <#list users as user> <tr> <td>${user.name}</td> <td>${user.age}</td> </tr> </#list> </tbody> </table> ``` 其中,`<#list>` 标签用于循环 `users` 集合中的每一个元素,`${user.name}` 和 `${user.age}` 分别表示集合中每个元素的姓名和年龄。 接下来,在 Java 代码中,通过 FreeMarker 的 API 解析模板文件,生成多个相同结构的表格。例如: ```java Configuration cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(new File("/path/to/templates")); Template template = cfg.getTemplate("table.ftl"); List<User> users = getUserList(); Map<String, Object> data = new HashMap<>(); data.put("users", users); Writer writer = new FileWriter(new File("/path/to/output")); for (int i = 1; i <= 10; i++) { template.process(data, writer); } writer.close(); ``` 其中,`getUserList()` 方法获取用户列表,`data` Map 存储模板中需要的数据,`for` 循环表示需要生成 10 个相同的表格。 最终,在指定的输出路径下,会生成 10 个相同结构的表格文件。 总的来说,通过 FreeMarker 的循环语句和表格标签,可以方便地实现多个相同结构的表格的生成。 ### 回答3: 在使用 JavaFreemarker 进行循环导出多个相同结构的表格时,有几个步骤需要遵循。首先,需要定义一个数据结构来存储表格的内容。可以使用 Java 对象、Map 或其他数据结构来实现。然后,在 FreeMarker 模板中使用循环结构来遍历数据结构中的每个元素,并生成对应的表格。 例如,可以定义一个包含多个 Map 元素的 List,每个 Map 存储一个表格的数据和表头信息。然后,在 FreeMarker 模板中使用类似以下的代码段来循环输出每个表格: ```html <#list tableList as table> <table> <thead> <tr> <#list table.header as col> <th>${col}</th> </#list> </tr> </thead> <tbody> <#list table.rows as row> <tr> <#list row as col> <td>${col}</td> </#list> </tr> </#list> </tbody> </table> </#list> ``` 该代码段使用了两个嵌套的循环结构,外层循环遍历所有表格,内层循环遍历每个表格的行和列。通过适当组织数据结构和 FreeMarker 模板,可以轻松地完成多个相同结构表格的循环导出

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值