java - Apache POI - 丢失单元策略

标签 java excel apache-poi

我正在根据数据库的内容使用 Apache POI 写入 Excel。我有下面的代码,它可以正常工作,如果我的数据库中的单元格为空,那么它将在 Excel 单元格中将其设置为空白。

但是,因为我有几个 if else 语句,所以它的 Sonar Lint 分析失败(需要降低认知复杂性,这意味着我需要删除一些 if else 语句)。我只需对 DoubleObject 类型应用这些检查。

经过一些研究,我认为解决此问题的最佳方法是创建缺失单元格策略(将 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/

相关文章:

java - 在 OCR 之前检查图像质量

java - 从 Java 存储过程将 String[] 转换为 ORA_MINING_VARCHAR2_NT

VBA将单元格引用传递到方法参数值

sql - 在单元格上执行 Oracle 查询的最佳方式?

vba - 输入框搜索工作表

java - 无法使用 Apache POI 写入 Excel 文件

java - 我有一个处理图片的Java 程序。它编译并运行,但没有显示任何内容......有人知道出了什么问题吗?

java - 在Java中读取xlsx复选框值

java - 如何根据内部逻辑多次运行 testNG 测试?

JavaFX - 从另一个类事件中打开一个场景