В моем проекте jhipster мне нужно создать новый файл xlsx на основе шаблона.Я помещаю свой шаблон file1.xlsx в target / classes / clientdoc.
Когда я впервые создаю новый файл xlsx, все в порядке.Но во второй раз я получил NPE по вызову «sheet.getRow (rowForTotalInfoNumber) .getCell (n)».Затем я просто открываю в LibreCalc (в Linux) target / classes / clientdoc / file1.xlsx и закрываюсь без каких-либо манипуляций с ним.После этого мой проект перезапускается в консоли.Я выполнил свой проект, позвонив ./mvnw.После этого я снова могу создать новый файл.
Это мой код:
@Configuration
public class ClientDocConfiguration {
private final Logger log =
@Bean
public FilelGenerator getFileGenerator() {
return new FileGenerator();
}
@Bean
public XSSFWorkbook workbook() throws IOException {
Resource xlsRes = new ClassPathResource("clientdocs/file.xlsx");
InputStream xlsStream = xlsRes.getInputStream();
XSSFWorkbook workbook = new XSSFWorkbook(xlsStream);
return workbook;
}
FileGenerator.java
@Component
public class FileGenerator {
private XSSFWorkbook workbook;
@Autowired
public void setWorkbook(XSSFWorkbook workbook) {
this.workbook = workbook;
}
public byte[] generateDocument() throws IOException {
XSSFSheet sheet = workbook.getSheetAt(0);
sheet.getRow(rowForTotalInfoNumber).getCell(n).setCellValue("X");
}