一、该问题的重现步骤是什么?
1.word(.docx poi:5.2.2)的新公式
2.语言:java
3.问题:如何从一个word读取一个段落,段落包含内容和新公式(内容:当a²+b²=25,a和b的值分别为多少?),读取了然后写到另一个word
二、你期待的结果是什么?实际看到的又是什么?
从一个word读取一个段落,段落包含内容和新公式(内容:当a²+b²=25,a和b的值分别为多少?),读取了然后写到另一个word
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
以下是一个简化的伪代码示例:
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; public class WordProcessing { public static void main(String[] args) { String sourceDocPath = "source.docx"; // 源文档路径 String targetDocPath = "target.docx"; // 目标文档路径 try (FileInputStream fis = new FileInputStream(sourceDocPath); XWPFDocument sourceDoc = new XWPFDocument(fis); XWPFDocument targetDoc = new XWPFDocument()) { // 遍历原文档中的每个段落 for (XWPFParagraph paragraph : sourceDoc.getParagraphs()) { String text = paragraph.getText(); // 检查段落是否包含特定内容 if (text.contains("a²+b²=25")) { // 将找到的段落复制到新文档中 XWPFParagraph newParagraph = targetDoc.createParagraph(); newParagraph.createRun().setText(text); // 这里简化处理,不包括复杂的格式和公式复制 } } // 保存新文档 try (FileOutputStream fos = new FileOutputStream(targetDocPath)) { targetDoc.write(fos); } } catch (IOException e) { e.printStackTrace(); } } }
请注意,这个示例只处理了简单的文本复制。如果源段落包含更复杂的元素(如嵌入的公式、图片等),
处理起来会更复杂。Apache POI的`XWPFRun`对象可以用来处理文本样式和添加图片,
但对于公式,POI的支持可能有限,特别是对于较新或复杂的公式类型。
如果需要处理这些复杂情况,可能需要查看Apache POI的官方文档或寻找特定的解决方案。
讨论(0)
-
嗯,这个正常文本可以,像你说的段落包含新公式的这种,我不知道怎么把公式和文字(公式和文字的顺序不能变)一起保存到另一个word。
现在,我知道怎么从当前段落
sourceXWPFParagraph
获取新公式,但是不知道它保存在
targetXWPFParagraph
的位置
(XWPFParagraph sourceXWPFParagraphXWPFParagraph targetXWPFParagraphisParagraph) Exception {
List<CTOMath> ctoMathList = sourceXWPFParagraph.getCTP().getOMathList()
讨论(0)
官方新品
- 热议问题
-
bladexBoot4.5,按照开发手册配置多数据源报错
1
-
初次登录之后如何关联用户如何重新刷新
1
-
物联网历史数据接口时间数组传参数问题
1
-
自定义弹出框,多次弹出时弹出框内残留上一次的下拉框数据
2
-
Token增加器的使用为空问题
1
-
Invalid bound statement
1
-
生产环境启动成功后服务自动停止
1
-
只要系统抛了异常,系统就会出现跨域的提示
1
-
skywalking的log页块下没有日志数据
1
-
rider中 使用127.0.0.1访问正常,用域名访问就跨域,一般是哪里设置不对
1
扫一扫访问 Blade技术社区 移动端