-
如果类似表格A-1统一格式的话,可以通过POI的workbook.getFontAt(cell.getCellStyle().getFontIndex())方法获取统一格式的文本样式
问题升级:
类似B-1这种形式,单元格内存在多种样式,那该如何处理呢?
-
可通过cell.getRichStringCellValue()方法获取富文本进行处理
注意的地方:富文本首个标签内的内容,是不包含样式的。其样式取自单元格的样式
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public static void main(String[] args) {
File file = FileUtil.file("C:\\Users\\YanZhiyu\\Desktop\\测试格式.xlsx");
Workbook workbook = null;
try {
workbook = new XSSFWorkbook(file);
Sheet sheet = workbook.getSheet("Sheet1");
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
Font font = workbook.getFontAt(cell.getCellStyle().getFontIndex());
boolean isBold = font.getBold();
byte underline = font.getUnderline();
boolean isUnderline = FontUnderline.SINGLE.getByteValue() == underline;
short colorIndex = font.getColor();
IndexedColors color = IndexedColors.fromInt(colorIndex);
String fontName = font.getFontName();
short fontSize = font.getFontHeightInPoints();
String stringCellValue = cell.getStringCellValue();
System.out.printf("单元格[%d, %d],字体加粗:%b,字体颜色:%s,字体名称:%s,字体大小:%d,字体下划线:%s,值为:%s\n",
row.getRowNum(), cell.getColumnIndex(), isBold, color, fontName, fontSize, isUnderline, stringCellValue);
XSSFRichTextString richStringCellValue = (XSSFRichTextString) cell.getRichStringCellValue();
String string = richStringCellValue.getCTRst().toString();
System.out.printf("富文本内容为:%s\n", string);
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidFormatException e) {
e.printStackTrace();
打印输出日志如下:
单元格[0, 0],字体加粗:true,字体颜色:BLACK,字体名称:宋体,字体大小:16,字体下划线:false,值为:盼望着,盼望着,东风来了,春天的脚步近了。
一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。
富文本内容为:
<t xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">盼望着,盼望着,东风来了,春天的脚步近了。
一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。</t>
单元格[0, 1],字体加粗:true,字体颜色:BLACK,字体名称:金山云技术体,字体大小:14,字体下划线:true,值为:盼望着,盼望着,东风来了,春天的脚步近了。
一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。
富文本内容为:
<xml-fragment xmlns:main="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<main:r>
<main:t>盼望着</main:t>
</main:r>
<main:r>
<main:rPr>
<main:b/>
<main:i/>
<main:sz val="16"/>
<main:rFont val="宋体"/>
<main:charset val="134"/>
<main:scheme val="minor"/>
</main:rPr>
<main:t>,</main:t>
</main:r>
<main:r>
<main:rPr>
<main:b/>
<main:i/>
<main:u/>
<main:sz val="18"/>
<main:rFont val="汉仪青云简"/>
<main:charset val="134"/>
</main:rPr>
<main:t>盼望着</main:t>
</main:r>
<main:r>
<main:rPr>
<main:sz val="16"/>
<main:rFont val="宋体"/>
<main:charset val="134"/>
<main:scheme val="minor"/>
</main:rPr>
<main:t>,</main:t>
</main:r>
<main:r>
<main:rPr>
<main:u/>
<main:sz val="16"/>
<main:rFont val="宋体"/>
<main:charset val="134"/>
<main:scheme val="minor"/>
</main:rPr>
<main:t>东风来了</main:t>
</main:r>
<main:r>
<main:rPr>
<main:sz val="16"/>
<main:rFont val="宋体"/>
<main:charset val="134"/>
<main:scheme val="minor"/>
</main:rPr>
<main:t>,春天的脚步近了。
一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。</main:t>
</main:r>
</xml-fragment>
package com.yeejoin.fireIotPlatform.common.util;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import ...
CSDN-Ada助手: