我在java中的ApachePOI框架的帮助下进行excel工作表上传。我在填充的列之间插入了一个空列,在某些文件中,该列的单元格被视为null,而在某些文件中,列中的空单元格被视为空字符串?为什么会这样?我使用谷歌表格在excel中插入了一个空列。
另外,为了理解这个问题,考虑使用 Row.CREATE_NULL_AS_BLANK
缺少我们在中使用的策略 row.getCell()
方法。excel工作表什么时候有空值的单元格,我们可以使用这个缺少的策略?
我在java中的ApachePOI框架的帮助下进行excel工作表上传。我在填充的列之间插入了一个空列,在某些文件中,该列的单元格被视为null,而在某些文件中,列中的空单元格被视为空字符串?为什么会这样?我使用谷歌表格在excel中插入了一个空列。
另外,为了理解这个问题,考虑使用 Row.CREATE_NULL_AS_BLANK
缺少我们在中使用的策略 row.getCell()
方法。excel工作表什么时候有空值的单元格,我们可以使用这个缺少的策略?
1条答案
按热度按时间wnvonmuf1#
在一个
Excel
图纸存储中的文件只有行和单元格具有值或设置时才会存储。不存储其他行和单元格。否则,即使未使用这些行和单元格,每个工作表也必须始终存储所有可能的行和单元格。那会浪费文件内存。如果行包含具有值或设置的单元格,则行具有值。如果行具有不同于默认值的行样式或特殊行高,则行具有设置。
如果设置了单元格值,则单元格具有值。如果单元具有单元样式,则它们具有设置。
也可能是即使单元格完全为空且没有样式,也会存储这些单元格。这取决于所使用的电子表格软件。这主要发生在单元格出现后被删除或复制/粘贴单元格时。
这个
Sheet.getRow
及Row.getCell
方法apache poi
获取未存储的行或单元格作为null
. 换句话说,只获取存储的行和单元格null
. 所以你总是需要检查null
之后Sheet.getRow
及Row.getCell
:在那之后,你可以确信
Row row
及Cell cell
不null
.对于
Cell
你也可以使用Row.getCell(int cellnum, Row.MissingCellPolicy policy)
. 请参阅(第行。丢失单元策略)。还有cellutil,它提供方法
CellUtil.getRow(int rowIndex, Sheet sheet)
及CellUtil.getCell(Row row, int columnIndex)
. 如果无法获取行或单元格,则两者都在创建行或单元格。如果只需要遍历已填充的行和单元格,则可以使用迭代器,如迭代行和单元格中所述。迭代器从来没有
null
行或单元格。但是,您可能会错过完全空白的行或跳过行中的空白单元格。为了避免这种情况,请阅读下面的“迭代单元格,控制丢失/空白单元格”。