直接上代码:
XSSFRichTextString richTextString = cell.getRichStringCellValue();
// 取得單元格的消除線屬性
boolean isCellStrikeOut = false;
XSSFCellStyle cellStyle = cell.getCellStyle();
if (cellStyle != null) {
XSSFFont font = cellStyle.getFont();
if (font.getStrikeout()) {
isCellStrikeOut = true;
}
}
StringBuilder sb = new StringBuilder();
if (isCellStrikeOut) {
// 單元格的消除線屬性是 True 的時候,取得設定過消除線屬性的文字
CTRElt[] rs = richTextString.getCTRst().getRArray();
for (int i = 0; i < rs.length; i ++) {
if (rs[i].getRPr() != null
&& rs[i].getRPr().getStrikeArray() != null
&& rs[i].getRPr().getStrikeArray().length == 0) {
sb.append(rs[i].getT());
}
}
} else {
// 單元格的消除線屬性是 False 的時候,取得為設定過消除線屬性的文字
CTRElt[] rs = richTextString.getCTRst().getRArray();
for (int i = 0; i < rs.length; i ++) {
if (rs[i].getRPr() == null
|| rs[i].getRPr().getStrikeArray() == null
|| rs[i].getRPr().getStrikeArray().length == 0) {
sb.append(rs[i].getT());
}
}
}
// 返回刪除了帶消除線屬性文字的文字串
return sb.toString();