我正在根据数据库的内容使用 Apache POI 写入 Excel。我有下面的代码,它可以正常工作,如果我的数据库中的单元格为空,那么它将在 Excel 单元格中将其设置为空白。
但是,因为我有几个 if else 语句,所以它的 Sonar Lint 分析失败(需要降低认知复杂性,这意味着我需要删除一些 if else 语句)。我只需对 Double
和 Object
类型应用这些检查。
经过一些研究,我认为解决此问题的最佳方法是创建缺失单元格策略(将 null 创建为空白),但我发现很难说该字段是否为 null,然后 setCellValue
作为missingCellPolicy
。
我该怎么做?
List<CaseData> cases = (List<CaseData>) model.get("cases");
Sheet sheet = workbook.createSheet("PIE Cases");
int rowCount = 1;
for (CaseData pieCase : cases) {
Row userRow = sheet.createRow(rowCount++);
if (pieCase.getActualAmountReturned() == null) {
userRow.createCell(2).setBlank();
} else {
userRow.createCell(2).setCellValue(pieCase.getActualAmountReturned());
}
if (pieCase.getChannel() == null) {
userRow.createCell(9).setBlank();
} else {
userRow.createCell(9).setCellValue(pieCase.getChannel().getChannel());
}
最佳答案
你可以做到这一点,效果很好
List<CaseData> cases = (List<CaseData>) model.get("cases");
Sheet sheet = workbook.createSheet("PIE Cases");
int rowCount = 1;
for (CaseData pieCase : cases) {
Row userRow = sheet.createRow(rowCount++);
if (pieCase.getActualAmountReturned() != null) {
userRow.createCell(2).setCellValue(pieCase.getActualAmountReturned());
}
if (pieCase.getChannel() != null) {
userRow.createCell(9).setCellValue(pieCase.getChannel().getChannel());
}
关于java - Apache POI - 丢失单元策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59104283/