У меня есть следующий сгенерированный отчет, который использует шаблон Excel и JXLS.В настоящее время отчет находит всех носителей и перечисляет их на одном листе Excel.Я хотел бы, чтобы каждый перевозчик и его соответствующая информация были указаны на отдельном листе в той же книге Excel.Каков наилучший способ создания многолистовых отчетов?
@RequestMapping(value = "/report/carrierDetailReport")
public void carrierDetailReport(HttpServletResponse response){
List<CarrierAppointment> carriers= carrierAppointmentRepository.findAll();
try {
response.addHeader("Content-disposition", "attachment; filename=CarrierDetailReport.xlsx");
response.setContentType("application/vnd.ms-excel");
InputStream is= new ClassPathResource("static/reports/CarrierDetailReport.xlsx").getInputStream();
Context context= new Context();
context.putVar("carriers", carriers);
List sheetNames = new ArrayList();
for(int i=0; i<carriers.size(); i++){
CarrierAppointment carrierAppointment = (CarrierAppointment) carriers.get(i);
sheetNames.add(carrierAppointment.getParentCompanyCarrier());
}
JxlsHelper.getInstance().processTemplate(is,response.getOutputStream(),context);
response.flushBuffer();
} catch (IOException e) {
e.printStackTrace();
}
}
Я видел некоторую документацию, в которой говорится, что вы можете просто поместить multisheet = "sheetName" в вашем для каждого оператора JXLS, но я не смог заставить его работать.вот так:
jx:each(items="carriers" var="carrier" lastCell="X2" multisheet="sheetName")
Это ошибка, которую я получаю:
2019-04-30 14:22:20.634 ERROR 15148 --- [p-nio-60-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at org.jxls.command.SheetNameGenerator.generateCellRef(SheetNameGenerator.java:22) ~[jxls-2.4.3.jar:na]