java - Apache POI - 缺少单元策略
问题描述
我正在使用基于我的数据库内容的 Apache POI 写入 Excel。我有下面的代码可以正常工作,如果我的数据库中的单元格为空,那么它在 Excel 单元格中将其设置为空白。
但是,因为我有几个 if else 语句,所以它的 Sonar Lint 分析失败(需要降低认知复杂性,这意味着我需要删除一些 if else 语句)。我只需要应用这些检查Double
和Object
类型。
经过一些研究,我认为解决此问题的最佳方法是创建一个缺失的单元格策略(将 null 创建为空白),但我发现很难说该字段是否为 null 然后setCellValue
as 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());
}