在我的jhipster项目中,我需要基于模板创建一个新的xlsx文件。我将模板file1.xlsx放到target / classes / clientdoc。
当我第一次生成一个新的xlsx文件时,就可以了。但是第二次我在调用“ sheet.getRow(rowForTotalInfoNumber).getCell(n)”时得到了NPE。然后,我只是在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");
}