从文本框中获取Apache POI XSSFRichTextString

时间:2018-05-02 10:32:44

标签: java apache-poi

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

重载setText()方法以设置String或XSSFRichTextString,但getText()方法只返回一个String。

我的方法如下: -

  1. 仅更改文本框中的文本,但保持格式不变。我希望得到字符串,只需更改文本,但在XSSFRichTextString中似乎没有setText方法。您似乎在构造函数中设置了文本,然后使用方法应用格式。使用它会将文本放在文本框中,但它会丢失所有格式。

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

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

    有什么建议吗?

1 个答案:

答案 0 :(得分:2)

向答案提出一些意见

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

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

首先,从您的XSSFTextBox,致电getTextParagraphs()获取paragraphs

接下来,调用getTextRuns()以获得共享相同格式的单个文本运行。搜索那些,直到找到包含您要更改的文本的那个。最后,调用XSSFTextRun.setText(String)来更改该运行的文本。格式将保持不变