Apache POI:部分单元格字体

Cod*_*y S 5 apache excel apache-poi

如果我破解MS Excel(我假设)或LibreOffice Calc(测试),我可以在单元格中输入内容,并在单元格中更改单元格中文本部分的字体,例如在一个单元格中执行:

此文本为粗体,此文本为斜体

再次,让我重申一下,这个字符串可以在一个单元格中以所示格式存在.

可以使用Apache POI实现这种级别的自定义吗?仅搜索似乎显示如何将字体应用于整个单元格.

谢谢

=== UPDATE ===

如下所示,我最终使用HSSFRichTextString(因为我正在使用HSSF).但是,在应用字体后(我尝试使用粗体和下划线),我的文本将保持不变.这就是我的尝试.为了把事情放在上下文中,我正在研究与运动相关的事情,其中​​通常以"awayteam"@"hometeam"的形式显示匹配,并且根据某些外部条件,我想制作一个或者另一个大胆.我的代码看起来像这样:

    String away = "foo";
    String home = "bar";
    String bolden = "foo"
    HSSFRichTextString val = new HSSFRichTextString(away+"@"+home);

    if(bolden.equals(home)) {
        val.applyFont(val.getString().indexOf("@") + 1, val.length(), Font.U_SINGLE);
    } else if(bolden.equals(away)) {
        val.applyFont(0, val.getString().indexOf("@"), Font.U_SINGLE);
    }
    gameHeaderRow.createCell(g + 1).setCellValue(val);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这是一个代码片段来自一个比显示的更复杂的函数,但最重要的是实际代码.如您所见,我正在将val.applyFont作为字符串的一部分,然后使用字符串设置单元格值.所以我不完全确定我在那里做错了什么.任何建议表示赞赏.

谢谢

KFJ

Gag*_*arr 5

POI确实支持它,你正在寻找的类是RichTextString.如果您的单元格是文本单元格,则可以为其获取RichTextString,然后将字体应用于其中的不同部分,以使文本的不同部分看起来不同.