标签: xwpf

如何在Java中使用POI中的XWPFTable合并单元格(或应用colspan)?

在poi中创建一个表非常简单,但它的教程非常有限,我找不到一个可以在生成docx文件的表中创建一个简单的合并单元格.

java apache-poi xwpf

6
推荐指数
3
解决办法
1万
查看次数

使用NPOI Library C#将图像添加到Word Docx

我已经在使用NPOI库创建Excel文档(这是POI Java项目的.NET版本),但现在我还想创建一个Word(Docx文档).

我想在文档中添加一个图像,但不知何故它不起作用.看起来它正在添加图像,但是当我打开下载的文档时

“The file <document filename> cannot be opened because there are problems with the contents”

这是在文档中添加图像的代码:

XWPFParagraph p2 = wordDoc.CreateParagraph();
XWPFRun r2 = p2.CreateRun();
r2.AddPicture(pictureData, (int)PictureType.PNG, "image1", 800, 600);
Run Code Online (Sandbox Code Playgroud)

其中pictureData是pictureData的memoryStream.memoryStrean是正确的,因为我可以从中获取base64字符串并显示正确的输出,但我想要的只是将此图像转换为word文档.

所以我的问题是,我错过了什么,我做错了什么?无法在XWPF文档中找到有关图像的任何文档.

提前致谢

c# image ms-office npoi xwpf

5
推荐指数
1
解决办法
2050
查看次数

行跨度与XWPFTable

如何在Java中使用POI中的XWPFTable合并2行或更多行(行跨度)上的单元格?

我知道如何在一行合并单元格,但我不知道它是如何做到的,我没有找到任何这样的例子.

提前致谢.

java apache-poi xwpf

5
推荐指数
1
解决办法
4699
查看次数

如何使用apache POI XWPFDocument从java创建多级项目符号和编号?

我已经阅读了许多与我的要求相关的博客和论坛,但到目前为止,我能够在我得到的所有帮助下为第一级生成子弹或编号.任何人都可以指导我如何使用apache poi创建多级编号.

想知道Apache POI XWPFDocument是否支持这样的功能?

以下是我的要求

  1. 第一级
    • 第二级
    • 第二级
  2. 第一级

编辑1:

这是我的示例代码,适用于单级编号

    public class TestNumbering {
        String fileName=""; 
        InputStream in = null;
        CTAbstractNum abstractNum = null;
        public TestNumbering() {
            try {
                in = CreateWordDocument.class.getClassLoader().getResourceAsStream("numbering.xml");
                abstractNum = CTAbstractNum.Factory.parse(in);
            } catch (XmlException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public String createDocument(String fileName, String content) {
            this.fileName=fileName;
            XWPFDocument doc = new XWPFDocument();

            doc.createNumbering();
            XWPFNumbering numbering=null;
            numbering=doc.createNumbering();
            for(String value: content.split("@")) {
                XWPFParagraph para = doc.createParagraph();
                para.setVerticalAlignment(TextAlignment.CENTER);
                para.setNumID(addListStyle(abstractNum, doc, numbering)); …
Run Code Online (Sandbox Code Playgroud)

apache-poi xwpf

5
推荐指数
1
解决办法
4888
查看次数

XWPF 表格单元格中的新段落

我正在尝试创建一个包含一列的简单表格。

我创建一个新行,并在每行中创建一个新段落。问题是每一行都以一个空行开头 - 我猜是新段落创建了它。

我之前尝试设置间距、缩进等,但没有成功。

       for (int i=0; i<questions.size(); i++) {
            Question question = questions.get(i);
            XWPFTableRow row = table.getRow(i);
            XWPFTableCell cell = row.getCell(0);

            XWPFParagraph paragraph = cell.addParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText(question.getQuestion());
        }
Run Code Online (Sandbox Code Playgroud)

新段落是否会创建新的空行?

该表看起来像这样:

java ms-word apache-poi xwpf

5
推荐指数
1
解决办法
4778
查看次数

如何使用 apache poi 更改特定 word 文档的颜色?

电流输出: 图片

需要的输出: 图像2

上面是 .docx 的快照,下面是代码示例代码,我想a在它被替换后改变颜色@r.setColor("DC143C")不起作用:

for (XWPFParagraph p : docx.getParagraphs()) {
        List<XWPFRun> runs = p.getRuns();
        if (runs != null) {
            for (XWPFRun r : runs) {
                String origText = r.getText(0);
                if (origText != null && origText.contains("a")) {
                    origText = origText.replace("a", "@");
                    r.setText(origText, 0);
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

java apache-poi xwpf

5
推荐指数
1
解决办法
2202
查看次数

Apache poi:每当在段落中插入运行时,XWPFFieldRun 都会移动到段落前面

我使用 apache-poi 突出显示 docx 中的句子。XWPFFieldRun我在下面编写了代码,如果我必须突出显示的句子中(或之前)没有该代码,则该代码有效。AXWPFFieldRun 可以是章节参考之类的东西。

private void highlightSentence(XWPFParagraph p, String sentence, HighlighterColor color, XWPFDefaultRunStyle defaultRunStyle) {
    List<XWPFRun> oldRuns = new ArrayList<>(p.getRuns());
    PositionInParagraph pos = new PositionInParagraph();
    TextSegement searchText = p.searchText(sentence, pos);
    while (searchText != null) {
        int beginPosIndex = searchText.getBeginPos().getRun();
        int endPosIndex = searchText.getEndPos().getRun();
        int offsetRuns = highlightInvolvedRuns(beginPosIndex, endPosIndex, oldRuns, sentence, p, color, defaultRunStyle);
        searchText = p.searchText(sentence, new PositionInParagraph(endPosIndex + offsetRuns + 1, 0, 0));
    }
}
Run Code Online (Sandbox Code Playgroud)

如果 aXWPFFieldRun位于包含该句子的运行中,则该searchText方法不会在文本中找到该句子。如果 aXWPFFieldRun位于句子之前的 …

java docx apache-poi xwpf

5
推荐指数
0
解决办法
569
查看次数

使用 Apache POI 从 Word 文档获取文本框段落

我们使用 Apache POI 来操作 Microsoft Word 文档。

到目前为止,我们可以使用以下 API 访问文档中所有必需的段落(包括页眉、页脚、表格)XWPFDocument

val allBodyElements = bodyElements
    .plus(headerList.flatMap { it.bodyElements })
    .plus(footerList.flatMap { it.bodyElements })

val allParagraphs = allBodyElements.flatMap {
    when (it) {
        is XWPFParagraph -> listOf(it)
        is XWPFTable -> it.rows
            .flatMap { row -> row.tableCells }
            .flatMap { cell -> cell.paragraphs }
        else -> emptyList()
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这遗漏了文本框中包含的段落。查看底层word/document.xml这些 TextBox 的嵌入方式如下:

<w:body>
  <w:p>
    <w:r>
      <mc:AlternateContent>
        <mc:Choice>
          <w:drawing>
            <wp:anchor>
              <a:graphic>
                <a:graphicData>
                  <wps:wsp>
                    <wps:txbx>
                      <w:txbxContent>
                        <!-- DESIRED PARAGRAPH -->
                      </w:txbxContent>
        ...
        </mc:Choice> …
Run Code Online (Sandbox Code Playgroud)

java ms-word apache-poi xwpf

5
推荐指数
0
解决办法
891
查看次数

Apache POI - 检索 .doc 文件中关键字之间的文本内容并有条件地呈现它

我想在 .doc 文件中查找两个关键字之间的文本内容,并有条件地呈现该文本内容或隐藏它。例如:

${if condition}Lorem Ipsum 是印刷和排版行业的简单虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业标准虚拟文本${endif}

当我使用 Apache - POI 解析文档时,我希望能够以某种方式在文档中发现这些块引用 ${if condition} ${endif}之间的每个内容,并有条件地在我想要生成的下一个文档中呈现或不呈现它。

所以上面的文本经过我的解析后应该有以下两种不同的形式:

1) 满足条件时

Lorem Ipsum 是印刷和排版行业的简单虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业标准虚拟文本

或者

2)如果不满足条件

Lorem Ipsum 只是虚拟文本

我尝试通过使用XWPFParagraph对象来做到这一点,XWPFRun但是这不是可靠的方法,因为在不可预测的条件下,运行可以在单词中间随机分割。

您能否提出任何可靠的方法来实现我的用例?提前致谢。

java ms-word apache-poi xwpf apache-poi-4

5
推荐指数
1
解决办法
887
查看次数

如何在 Java 中更改 Apache POI 中的 XWPFTableCell 边距?

我试图为此搜索太多,但没有得到想要的结果。我正在使用 Apache POI 使用 XWPF 将特定数据从 Excel 工作表复制到 MS Word 2010 文件中的表格。我已经完成了。

我想做的最后一件事是为每个单元格添加一个小的左右边距,以便文本不会粘在单元格边框上。我在互联网上搜索了所有内容,但无法这样做。也许我错过了一些东西。

java apache ms-word apache-poi xwpf

4
推荐指数
1
解决办法
3541
查看次数

标签 统计

xwpf ×10

apache-poi ×9

java ×8

ms-word ×4

apache ×1

apache-poi-4 ×1

c# ×1

docx ×1

image ×1

ms-office ×1

npoi ×1