XSSFCell.CELL_TYPE_PICTURE 不存在这样的定义
时间: 2023-07-29 21:12:21 浏览: 92
非常抱歉,我的回答有误。在POI 3.15及以上版本中,XSSFCell.CELL_TYPE_PICTURE已被废弃。正确的做法是使用CellType枚举类中的枚举值,示例代码如下:
```
XSSFCell cell = row.getCell(columnIndex);
if (cell.getCellTypeEnum() == CellType.PICTURE) {
// 单元格是图片类型
}
```
需要注意的是,如果使用的POI版本低于3.15,可以使用XSSFCell.CELL_TYPE_BLANK、XSSFCell.CELL_TYPE_BOOLEAN、XSSFCell.CELL_TYPE_ERROR、XSSFCell.CELL_TYPE_FORMULA、XSSFCell.CELL_TYPE_NUMERIC、XSSFCell.CELL_TYPE_STRING等常量来判断单元格类型。
相关问题
poi的Cell.CELL_TYPE_PICTURE 在java中不存在 如何引用
确实在 Java 中,POI 的 Cell 类中并没有 CELL_TYPE_PICTURE 常量。不过,你可以使用以下代码来检查单元格是否包含图片:
```java
if(cell.getCellType() == CellType.BLANK) {
// 空单元格
} else if(cell.getCellType() == CellType.NUMERIC) {
// 数字类型单元格
} else if(cell.getCellType() == CellType.STRING) {
// 字符串类型单元格
} else if(cell.getCellType() == CellType.BOOLEAN) {
// 布尔类型单元格
} else if(cell.getCellType() == CellType.FORMULA) {
// 公式类型单元格
} else if(cell.getCellType() == CellType.ERROR) {
// 错误类型单元格
} else if(cell.getCellType() == CellType._NONE) {
// 未知类型单元格
} else if(cell.getCellType() == CellType._CUSTOM) {
// 自定义类型单元格
} else {
// 如果以上类型都不是,则可以认为单元格包含图片
}
```
如果单元格包含图片,可以通过以下代码来获取图片:
```java
if(cell.getCellType() == CellType._NONE) {
// 未知类型单元格,可能包含图片
if(cell instanceof HSSFCell) {
HSSFPictureData pictureData = ((HSSFCell) cell).getSheet().getWorkbook().getAllPictures().get(((HSSFPicture) ((HSSFCell) cell).getCellValue()).getPictureIndex()-1);
byte[] byteData = pictureData.getData();
// 处理图片数据
} else if(cell instanceof XSSFCell) {
XSSFDrawing drawing = ((XSSFCell) cell).getSheet().createDrawingPatriarch();
for(XSSFShape shape : drawing.getShapes()) {
if(shape instanceof XSSFPicture) {
XSSFPicture picture = (XSSFPicture) shape;
if(picture.getCTPicture().getBlipFill() != null) {
byte[] byteData = picture.getPictureData().getData();
// 处理图片数据
}
}
}
}
}
```
请注意,这里需要判断单元格类型是否为 _NONE,因为只有这种类型的单元格才可能包含图片。
cell.cell_type_string报红
'b'cell.cell_type_string\xe6\x8a\xa5\xe7\xba\xa2''是一个编码问题导致的报错信息,可能是出现在程序中的某个字符串或变量中的错误编码字符所导致的。需要进一步了解代码上下文才能确定具体原因。