gpt4 book ai didi

java - 使用来自两个存储库的信息创建 Excel 电子表格

转载 作者:行者123 更新时间:2023-12-02 10:24:29 25 4
gpt4 key购买 nike

我想创建一个报告,将所有许可证和保险从其单独的存储库中提取到 Excel 工作表中。有没有办法做到这一点:

@RequestMapping(value="/report/expirationReport")
public void getExpirationReport(Model model,HttpServletResponse response){
List<License> licenses;
List<Insurance> insurances;
licenses = licenseRepository.findAll();
insurances = insuranceRepository.findAll();

List<String> headers=Arrays.asList("Legal Name","Principle Name","Type","State","Expiration");
response.addHeader("Content-disposition", "attachment; filename=ExpirationReport.xls");
response.setContentType("application/vnd.ms-excel");
try {
new SimpleExporter().gridExport(headers, licenses, insurances,"client.legalName, client.principleName,type,state,expiration", response.getOutputStream());
response.flushBuffer();
}catch (IOException e) {
e.printStackTrace();
}
}

两个存储库都已经存在,但我不能只添加保险(就像我上面所做的那样),因为 SimpleExporter 似乎只接受两个对象,然后是对象 Prop 。知道如何让它接受所有三个对象吗?或者知道如何最好地将两个 repo findAll 函数结果连接/保存到一个数据对象中?

编辑:我能够通过浏览客户表来使其工作,因为许可证和保险都有客户的外键。代码如下:

@RequestMapping(value="/report/expirationReport")
public void expirationReport(HttpServletResponse response){
List<Client> clients=clientRepository.findAll();

try {
response.addHeader("Content-disposition", "attachment; filename=expirationReport.xlsx");
response.setContentType("application/vnd.ms-excel");
InputStream is= new ClassPathResource("static/reports/expirationReport.xlsx").getInputStream();
Context context= new Context();
context.putVar("clients", clients);

JxlsHelper.getInstance().processTemplate(is,response.getOutputStream(),context);
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

licensesinsurances 是两个独立的列表,在编程上没有任何共同点。它们的大小可能不同,因此 JXLS 不知道应该在哪一行使用它。

因此 JXLS 仅支持 gridExport() 中的单个 Iterable。最好的选择是将您的列表合并在一起。由您决定是将它们加入存储库还是单独的服务(或在 Controller 内部进行黑客攻击),但它绝对必须是单个集合。

关于java - 使用来自两个存储库的信息创建 Excel 电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54080353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com