导入EXCEL空列怎么添加到Object里边


List<Object[]> list = new ArrayList<>();
            InputStream inputStream = new FileInputStream(fileName);
            Workbook workbook = WorkbookFactory.create(inputStream);
            Sheet sheet = workbook.getSheetAt(0);

            //获取sheet的行数
            int rows = sheet.getLastRowNum();
            for (int i = 0; i < rows; i++) {
                //过滤表头行
                if (i == 0) {
                    continue;
                }
                //获取当前行的数据
                Row row = sheet.getRow(i);
                Object[] objects = new Object[row.getPhysicalNumberOfCells()];
                int index = 0;
                for (Cell cell : row) {

                    if (cell.getCellType().equals(NUMERIC)) {
                        objects[index] = (int) cell.getNumericCellValue();
                    }
                    if (cell.getCellType().equals(STRING)) {
                        objects[index] = cell.getStringCellValue();
                    }
                    if (cell.getCellType().equals(BOOLEAN)) {
                        objects[index] = cell.getBooleanCellValue();
                    }
                    if (cell.getCellType().equals(ERROR)) {
                        objects[index] = cell.getErrorCellValue();
                    }
                    if(cell.getCellType().equals(BLANK)){
                            System.out.println("");
                    }
                    index++;
                }
                list.add(objects);
            }

有10个列,有两个列里边是空值,size的长度就是8了,数据上传不了

您的问题是关于如何在导入Excel时处理空列并将其添加到Object[]中。在您提供的代码中,您已经检查了单元格类型是否为空(BLANK),但是您没有将空值添加到objects数组中。为了解决这个问题,您可以在检查到空单元格时将null值添加到objects数组中。这样,您就可以保留空列的位置,使得数组的长度始终为10。

请尝试将以下代码添加到处理空单元格的部分:

if (cell.getCellType().equals(BLANK)) {
    objects[index] = null;
}
修改后的代码如下:

```c
List<Object[]> list = new ArrayList<>();
InputStream inputStream = new FileInputStream(fileName);
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);

//获取sheet的行数
int rows = sheet.getLastRowNum();
for (int i = 0; i < rows; i++) {
    //过滤表头行
    if (i == 0) {
        continue;
    }
    //获取当前行的数据
    Row row = sheet.getRow(i);
    Object[] objects = new Object[row.getPhysicalNumberOfCells()];
    int index = 0;
    for (Cell cell : row) {

        if (cell.getCellType().equals(NUMERIC)) {
            objects[index] = (int) cell.getNumericCellValue();
        }
        if (cell.getCellType().equals(STRING)) {
            objects[index] = cell.getStringCellValue();
        }
        if (cell.getCellType().equals(BOOLEAN)) {
            objects[index] = cell.getBooleanCellValue();
        }
        if (cell.getCellType().equals(ERROR)) {
            objects[index] = cell.getErrorCellValue();
        }
        if (cell.getCellType().equals(BLANK)) {
            objects[index] = null;
        }
        index++;
    }
    list.add(objects);
}
现在,当遇到空列时,objects数组将包含null值,这样您就可以正确地处理空列并将数据上传 

```

如果你想将空值的列也添加到Object数组中,你可以通过判断单元格的类型是否为空格(BLANK)来实现。在你的代码中,可以添加以下条件语句来处理空格类型的单元格:

if (cell.getCellType().equals(BLANK)) {
    objects[index] = null; //或者你可以设置为一个默认值
}

这样,即使单元格中没有数据,它仍然会添加到Object数组中,并占据相应的位置。如果你不想在列表中包含空白单元格,则可以在添加Object数组之前检查该行是否包含空白单元格。例如,你可以添加以下条件语句:

//获取当前行的数据
Row row = sheet.getRow(i);
//检查当前行是否存在空白单元格
if (row.getPhysicalNumberOfCells() < 10) {
    continue;
}
Object[] objects = new Object[10];
int index = 0;
for (Cell cell : row) {
    //...处理其他单元格类型
    if (cell.getCellType().equals(BLANK)) {
        objects[index] = null; //或者你可以设置为一个默认值
    }
    index++;
}
list.add(objects);

这个条件语句将检查当前行是否具有预期的10个单元格。如果它们不是,则跳过该行并继续处理下一行。这可以确保你的Object数组中仅包含完整的行数据。