Java 从文本框中获取Apache POI XSSFRichTextString

Java 从文本框中获取Apache POI XSSFRichTextString,java,apache-poi,Java,Apache Poi,如何使用POI从excel电子表格的文本框中获取XSSFRichTextString setText()方法重载为设置字符串或XSSFRichTextString,但getText()方法仅返回字符串 我的做法如下:- 只更改文本框中的文本,但保持格式不变。我希望得到字符串并简单地更改文本,但XSSFRichTextString中似乎没有setText方法。似乎您在构造函数中设置了文本,然后使用方法应用格式。使用此选项会将文本放入文本框,但会丢失所有格式 提取整个XSSFRichTextStri

如何使用POI从excel电子表格的文本框中获取XSSFRichTextString

setText()方法重载为设置字符串或XSSFRichTextString,但getText()方法仅返回字符串

我的做法如下:-

  • 只更改文本框中的文本,但保持格式不变。我希望得到字符串并简单地更改文本,但XSSFRichTextString中似乎没有setText方法。似乎您在构造函数中设置了文本,然后使用方法应用格式。使用此选项会将文本放入文本框,但会丢失所有格式

  • 提取整个XSSFRichTextString,提取格式,使用新文本创建新RTS并应用格式。问题是,虽然有一个setFont(Font对象)方法,但getFont()只返回一个short,因此我似乎无法获取Font对象并对其进行更改

  • 3我的最后一个选择是在文本框中设置纯文本,然后以编程方式设置所有字体和格式元素,但这意味着将格式隐藏在Java代码中,这意味着如果用户需要调整格式而不是仅使用Excel,则需要重新编码


    有什么建议吗?

    推荐一些评论作为答案

    无法从Excel文本框中获取
    RichTextString
    。文本框中格式化文本的存储模式与普通单元格中的存储模式有所不同,大多数情况下,它似乎支持额外的功能和各种格式。文本框文本在其结构/存储方式上更像一个单词

    然而,有一个好消息——你可以做你想做的事,在不改变格式的情况下更改文本框中的某些特定文本

    首先,从你的电话,得到


    接下来,调用以获取共享相同格式的单独文本运行。搜索这些内容,直到找到包含要更改的文本的内容。最后,调用以更改该运行的文本。格式将保持不变

    将一些注释升级为答案

    无法从Excel文本框中获取
    RichTextString
    。文本框中格式化文本的存储模式与普通单元格中的存储模式有所不同,大多数情况下,它似乎支持额外的功能和各种格式。文本框文本在其结构/存储方式上更像一个单词

    然而,有一个好消息——你可以做你想做的事,在不改变格式的情况下更改文本框中的某些特定文本

    首先,从你的电话,得到


    接下来,调用以获取共享相同格式的单独文本运行。搜索这些内容,直到找到包含要更改的文本的内容。最后,调用以更改该运行的文本。格式将保持不变

    为什么不将格式文本从这些文件中删除?@Gagravarr。谢谢你的帮助。不幸的是,它将不允许我采取现有的文本运行,只是改变文本,但它确实有更多的访问格式。我只需要构建一个formatter类,从现有的文本运行读取格式,创建一个新的文本运行,添加文本,然后重新应用格式。但这应该是可能的。再次感谢。只需从文本框转到段落,再转到文本运行(运行中的所有内容都具有相同的格式),然后更改运行中需要的文本。格式应该是不变的完美!!!它现在工作得很好。谢谢你的帮助。如果你想添加你的回复作为答案,我很乐意投票并接受。那么为什么不将格式化文本从这些内容中删除?@Gagravarr。谢谢你的帮助。不幸的是,它将不允许我采取现有的文本运行,只是改变文本,但它确实有更多的访问格式。我只需要构建一个formatter类,从现有的文本运行读取格式,创建一个新的文本运行,添加文本,然后重新应用格式。但这应该是可能的。再次感谢。只需从文本框转到段落,再转到文本运行(运行中的所有内容都具有相同的格式),然后更改运行中需要的文本。格式应该是不变的完美!!!它现在工作得很好。谢谢你的帮助。如果你想加上你的回答,我很乐意投赞成票并接受。