无法从Excel单元格获取布尔值

问题描述 投票:0回答:2

尝试从 Excel 文件访问布尔值时出现错误。

final Cell enabledCell = row.getCell(6);
enabledCell.getBooleanCellValue() // this throws an exception

java.lang.IllegalStateException: Cannot get a BOOLEAN value from a STRING cell

在 Excel 文件中,我刚刚在第六列中写入了“TRUE”和“FALSE”作为值,但不知何故它们被视为字符串而不是布尔值。

java excel spring-boot file apache-poi
2个回答
5
投票

本地化 Excel 应用程序中的布尔值也已本地化。例如,在我的德语 Excel 中,布尔值是

WAHR
FALSCH
。如果我使用德语 Excel GUI 将
TRUE
FALSE
放入单元格中,那么这不是 布尔值,而是文本字符串。

所以在获取单元格值之前总是需要检查

CellType

。或者使用 
DataFormatter
 始终获取独立于单元格类型的字符串值。

两者均显示在

繁忙的 HSSF 和 XSSF 功能开发人员指南 -> 获取单元格内容中。

此外,您可能会得到错误的单元格。在

Row.getCell 中,int cellnum

 是从 0 开始的。列 
A
cellnum
 0。因此 
cellnum
 6 是列 
G
,这是第 7 列而不是第 6 列。但这是次要的。主要是在获取单元格值之前需要检查 
CellType
 或使用 
DataFormatter


0
投票
直接在单元格中输入 =TRUE 或 =FALSE。 这会将它们存储为 Excel 中的布尔类型。

© www.soinside.com 2019 - 2025. All rights reserved.