如何使用POI从excel电子表格中的文本框中获取XSSFRichTextString?
重载setText()方法以设置String或XSSFRichTextString,但getText()方法只返回一个String。
我的方法如下: -
仅更改文本框中的文本,但保持格式不变。我希望得到字符串,只需更改文本,但在XSSFRichTextString中似乎没有setText方法。您似乎在构造函数中设置了文本,然后使用方法应用格式。使用它会将文本放在文本框中,但它会丢失所有格式。
提取整个XSSFRichTextString,解压缩格式,使用新文本创建新RTS并应用格式。问题是虽然有一个setFont(Font对象)方法,但getFont()只返回一个short,所以我似乎无法获取Font对象并进行更改。
3我的最后一个选项是在文本框中设置纯文本,然后以编程方式设置所有字体和格式元素,但这意味着在Java代码中隐藏格式,这意味着如果用户需要调整格式,则重新编码只使用Excel。
有什么建议吗?
答案 0 :(得分:2)
向答案提出一些意见
您无法从Excel文本框中获取RichTextString
。文本框中格式化文本的存储模型与普通单元格中的存储模型不同,大多数情况下它似乎支持额外的功能和各种格式。文本框文本在结构/存储方式上有点像Word一样
然而,有一个好消息 - 你可以做你想要的,并在不改变格式的情况下更改文本框中的某些特定文本!
首先,从您的XSSFTextBox,致电getTextParagraphs()获取paragraphs
接下来,调用getTextRuns()以获得共享相同格式的单个文本运行。搜索那些,直到找到包含您要更改的文本的那个。最后,调用XSSFTextRun.setText(String)来更改该运行的文本。格式将保持不变