easyexcel 读取带删除线样式的文字
时间: 2023-08-04 16:26:50 浏览: 255
可以使用 EasyExcel 中的 `ReadCellDataConverter` 接口来自定义读取单元格数据的方法。具体实现步骤如下:
1. 实现 `ReadCellDataConverter` 接口,重写 `convertToJavaData` 方法。
2. 在 `convertToJavaData` 方法中,判断当前单元格是否有删除线样式。如果有,则先将单元格的样式设置为无删除线样式,再通过 `cell.getStringCellValue()` 方法获取单元格的字符串内容。
3. 最后将单元格的样式设置为原来的样式,并返回获取到的字符串内容。
示例代码如下:
```java
public class StrikethroughConverter implements ReadCellDataConverter<String> {
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty,
GlobalConfiguration globalConfiguration) throws Exception {
Cell cell = cellData.getCell();
CellStyle originalStyle = cell.getCellStyle();
if (originalStyle.getFont().getStrikeout()) {
CellStyle newStyle = cell.getSheet().getWorkbook().createCellStyle();
newStyle.cloneStyleFrom(originalStyle);
Font font = cell.getSheet().getWorkbook().createFont();
font.setFontName(originalStyle.getFont().getFontName());
font.setFontHeightInPoints(originalStyle.getFont().getFontHeightInPoints());
newStyle.setFont(font);
font.setStrikeout(false);
cell.setCellStyle(newStyle);
String value = cell.getStringCellValue();
cell.setCellStyle(originalStyle);
return value;
}
return cellData.getStringValue();
}
}
```
使用时,可以通过 `@ExcelProperty` 注解指定要读取的单元格,并将 `converter` 属性设置为自定义的转换器类。示例代码如下:
```java
@Data
public class ExcelData {
@ExcelProperty(index = 0, converter = StrikethroughConverter.class)
private String content;
}
public class ExcelReader {
public static void main(String[] args) throws Exception {
String fileName = "test.xlsx";
InputStream in = new FileInputStream(fileName);
ExcelReaderBuilder builder = EasyExcel.read(in, ExcelData.class, new ExcelDataListener());
builder.sheet().headRowNumber(0).doRead();
in.close();
}
}
```
阅读全文