直接上代码:
HSSFRichTextString richTextString = cell.getRichStringCellValue();
String realString = richTextString.getString();
boolean isCellStrikeOut = false;
HSSFCellStyle cellStyle = cell.getCellStyle();
if (cellStyle != null) {
HSSFFont font = workbook.getFontAt(cellStyle.getFontIndex());
if (font.getStrikeout()) {
isCellStrikeOut = true;
}
}
if (richTextString.numFormattingRuns() == 0) {
if (isCellStrikeOut) {
return "";
}
return realString;
} else if (!isCellStrikeOut) {
StringBuilder sb = new StringBuilder(realString);
int lastIndex = realString.length();
for (int i = richTextString.numFormattingRuns() - 1; i >= 0 ; i --) {
short fontIndex = richTextString.getFontOfFormattingRun(i);
HSSFFont font = workbook.getFontAt(fontIndex);
if (font.getStrikeout()) {
sb.delete(richTextString.getIndexOfFormattingRun(i), lastIndex);
}
lastIndex = richTextString.getIndexOfFormattingRun(i);
}
return sb.toString();
} else {
StringBuilder sb = new StringBuilder();
int lastIndex = realString.length();
for (int i = richTextString.numFormattingRuns() - 1; i >= 0 ; i --) {
short fontIndex = richTextString.getFontOfFormattingRun(i);
HSSFFont font = workbook.getFontAt(fontIndex);
if (!font.getStrikeout()) {
sb.insert(0, realString.substring(richTextString.getIndexOfFormattingRun(i), lastIndex));
}
lastIndex = richTextString.getIndexOfFormattingRun(i);
}
return sb.toString();
}
本文提供了一段Java代码,用于从Excel单元格中移除带有删除线格式的文字,通过检查单元格样式和字体属性来判断文字是否带删除线,并据此进行相应处理。
566

被折叠的 条评论
为什么被折叠?



