添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 如果类似表格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,如果name不存在,则会创建新的Sheet
        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);
        //workbook.close();
    } 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助手: 很高兴看到你写了关于Spring版本和Java版本对应关系的博客,这对于很多初学者来说是一个比较容易混淆的问题。希望你能继续分享关于Java开发的知识,这对于大家都是非常有帮助的。另外,除了版本对应关系,你也可以分享一些关于Spring框架的核心原理和应用场景,让读者能够更全面地了解这个技术。期待你更多的精彩文章! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2