java 读写word新公式

Blade 未结 2 315
349444073
349444073 剑圣 2024-01-28 13:55

一、该问题的重现步骤是什么?


1.word(.docx   poi:5.2.2)的新公式

2.语言:java

3.问题:如何从一个word读取一个段落,段落包含内容和新公式(内容:当a²+b²=25,a和b的值分别为多少?),读取了然后写到另一个word

二、你期待的结果是什么?实际看到的又是什么?

从一个word读取一个段落,段落包含内容和新公式(内容:当a²+b²=25,a和b的值分别为多少?),读取了然后写到另一个word

三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  • 2024-01-29 17:35

    以下是一个简化的伪代码示例:

    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 讨论(0)
  • 2024-01-30 21:29

    嗯,这个正常文本可以,像你说的段落包含新公式的这种,我不知道怎么把公式和文字(公式和文字的顺序不能变)一起保存到另一个word。

    现在,我知道怎么从当前段落

    sourceXWPFParagraph

    获取新公式,但是不知道它保存在

    targetXWPFParagraph

    的位置

    (XWPFParagraph sourceXWPFParagraphXWPFParagraph targetXWPFParagraphisParagraph) Exception {
    
       List<CTOMath> ctoMathList = sourceXWPFParagraph.getCTP().getOMathList()


    0 讨论(0)
提交回复