java - 从文本框中获取 Apache POI XSSFRichTextString

标签 java apache-poi

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

重载了 setText() 方法来设置 String 或 XSSFRichTextString,但 getText() 方法仅返回 String。

我的方法如下:-

  1. 仅更改文本框中的文本,但保持格式不变。我希望获取字符串并简单地更改文本,但 XSSFRichTextString 中似乎没有 setText 方法。看来您在构造函数中设置文本,然后使用方法应用格式。使用此功能确实会将文本放入文本框中,但会丢失所有格式。

  2. 提取整个 XSSFRichTextString、提取格式、使用新文本创建新的 RTS 并应用格式。问题是,虽然有一个 setFont(Font object) 方法,但 getFont() 仅返回一个简短的内容,因此我似乎无法获取 Font 对象并更改它。

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

有什么建议吗?

最佳答案

将一些评论提升为答案

您无法从 Excel 文本框中获取 RichTextString。文本框中格式化文本的存储模型与普通单元格中的存储模型有所不同,主要是它似乎支持额外的功能和格式类型。文本框文本的结构/存储方式有点像 Word

但是,有个好消息 - 您可以做您想做的事情,更改文本框中的某些特定文本,而无需更改格式!

首先,来自您的XSSFTextBox ,调用getTextParagraphs()获取paragraphs

下一步,调用getTextRuns()使各个文本运行共享相同的格式。搜索这些内容,直到找到包含您要更改的文本的内容。最后调用XSSFTextRun.setText(String)更改该运行的文本。格式将保持不变

关于java - 从文本框中获取 Apache POI XSSFRichTextString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50132492/

相关文章:

java - 帮助在java中解析JSON

java - jFreeChart 在 Android 2.x 中工作/完成吗

java - Android:创建一个覆盖一半屏幕并自行更新的 ListView

java - 如何使用java从Excel单元格中获取超链接地址?

java小程序在chrome中不可见但在FF中工作

java - 从单元测试中产生一个单独的进程

java - 包 org.apache.poi.ss.usermodel 可以从多个模块访问 : poi, poi.ooxm

java - 读取多个excel文件并将数据推送到java中的各个对象,寻找有效的方法

java - Apache POI 和自动行高以及合并单元格

java - 将 hashmap 用于 POI Java XLSX