- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在对 .docx 文件进行搜索和替换,在某些情况下,替换文本包含换行符。我为此尝试了几种技术。第一个是将替换文本分成几行并执行:
run.setText(lines[0], 0);
for(int x=1; x<lines.length; x++) {
run.addCarriageReturn();
run.setText(lines[x]);
}
结果全部在一行中运行。
然后我做了一些搜索,找到了这段代码,用于用每行一组段落替换现有段落:
private void replaceParagraph(XWPFParagraph p, String[] paragraphs) {
if (p != null) {
XWPFDocument doc = p.getDocument();
for (int i = 0; i < paragraphs.length; i++) {
XmlCursor cursor = p.getCTP().newCursor();
XWPFParagraph newP = doc.insertNewParagraph(cursor);
newP.setAlignment(p.getAlignment());
newP.getCTP().insertNewR(0).insertNewT(0).setStringValue(paragraphs[i]);
newP.setNumID(p.getNumID());
}
doc.removeBodyElement(doc.getPosOfParagraph(p));
}
}
问题是 insertNewParagraph 每次都返回 null。这可能是因为该段落位于表格单元格内,但我没有将其作为原因。我检查了游标,cursor.isStart() 为 true,这似乎符合文档的要求。
Add a new paragraph at position of the cursor. The cursor must be on the XmlCursor.TokenType.START tag of an subelement of the documents body. When this method is done, the cursor passed as parameter points to the XmlCursor.TokenType.END of the newly inserted paragraph.
我已经仔细检查过 doc != null,我想不出任何其他可能返回 null 的原因。有什么建议吗?
最佳答案
事实证明,这解决了问题。
private void createParagraphs(XWPFParagraph p, String[] paragraphs) {
if (p != null) {
XWPFDocument doc = p.getDocument();
XmlCursor cursor = p.getCTP().newCursor();
for (int i = 0; i < paragraphs.length; i++) {
XWPFParagraph newP = doc.createParagraph();
newP.getCTP().setPPr(p.getCTP().getPPr());
XWPFRun newR = newP.createRun();
newR.getCTR().setRPr(p.getRuns().get(0).getCTR().getRPr());
newR.setText(paragraphs[i]);
XmlCursor c2 = newP.getCTP().newCursor();
c2.moveXml(cursor);
c2.dispose();
}
cursor.removeXml(); // Removes replacement text paragraph
cursor.dispose();
}
}
关于java - 在 XWPFDocument 中插入一个段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667619/
我有一个包含项目的表。我想在Word文档中设置项目的名称,但每个项目都在一个新行中。 所以我创建了下面的空白: 当我的文本包含“P01”时,我用名称替换文本,添加新行并设置另一个文本“P01”。 pu
对于旧的 Microsoft 格式 (.doc),APACHE POI 使用 HWPFDocument。要知道此对象的页数,我只需要做: HWPFDocument document = new HW
我想将带有阿拉伯字母的word转换为pdf,经过一番研发后,我决定使用 org.apache.poi.xwpf.converter.pdf.PdfConverter 但是当我写下面的代码时,最终结果是
我没有将文档的内容附加到 CTBody 类,而是使用 XWPFDocument 类将所有数据从 Word 文档传输到空文档,但是我收到如下错误。当我将 XWPFDocument 文档转换为 pdf 时
我现在正在用java生成word文档,并且正在使用POI Apache的XWPFDocument。最终文档必须如下所示 http://sk.uploads.im/t/rtwvm.png 直到一切正常,
我正在尝试从 microsoft-word 中提取数据并将其转换为 sql 语句并将其插入 Oracle 数据库。 当 ms-word 中的数据包含通过 [Shift-Enter] 创建的新行而不只是
我们正在实现一个门户,用于处理修改和生成 Microsoft Office 2007 文档 (docx) 的请求。后端是用 Java 实现的,使用 Apache POI 作为操作 docx 文件内容的
我正在使用 apache poi 3.8 将值写入 word 模板。我用所需的值替换单词文件(键)中的特定字符串,例如word文档有一段包含key %Entry1%,我想用“Entry text li
我实际上是用 Apache POI 生成一个 Word 文档,我需要自动创建一个引用段落的目录 (TOC),以及它们的页面指示。 这是我正在使用的代码(我省略了前提条件和内部方法的主体): XWPFD
我正在对 .docx 文件进行搜索和替换,在某些情况下,替换文本包含换行符。我为此尝试了几种技术。第一个是将替换文本分成几行并执行: run.setText(lines[0], 0); for(int
我正在使用 Apache POI 方法在我的项目中创建和填充 XWPFDocument 对象,就像这样 public XWPFDocument test() { XWPFDocument doc =
我需要知道如何将 multipartFile 转换为 XWPFDocument 以便将其作为 Word 文件读取(我上传的文件实际上是 .docx ),但是我收到错误: org.springframe
我有一个 Microsoft Word .docx 文档上传到 Sharepoint。在我的 java 代码中,我已将此文档下载到一个 byte[] 中。好的。现在,我想要的是处理这个 byte[]
你知道是否有办法在段落填充文档 (XWPFDocument) 中插入段落 (XWPFParagraph) 吗? 有一种方法可以将文档中已经存在的段落“更改”为另一个段落 (XWPFDocument.s
我已经创建了一个代码,可以使用 Apache POI API 动态创建 Word 文档。该文档预计有一些行数不同的表(列数是固定的)。目前我已将每个表格放置在不同的页面上。我需要知道或者有什么方法可以
我想让 XWPFParagraph(开始)内的文本成为指向文档中另一个具体 XWPFParagraph(结束)的超链接。我找到了在 XWPFCell 内创建超链接的代码,但它不起作用(启动链接开始):
我正在尝试将文本和屏幕截图附加到现有的 Word 文件中。但每次执行以下代码时,我都会收到错误: org.apache.poi.EmptyFileException: The supplied fil
为了帮助解决我遇到的另一个问题,我在 POI Word 小部件的 postGenerationProcess 事件中测试以下代码: var jce:writeXWPFDocument = new wr
我正在尝试使用 XWPFDocument.InsertNewParagraph(XmlDocument cursor) 但该方法要求使用 XmlDocument cursor,我不知道在哪里可以找到它
我尝试从我的 Android 应用程序读取 docx 文件,但以下代码给出了 NoClassDefFoundException :org.doc4j.NameSpace try{ InputS
我是一名优秀的程序员,十分优秀!