gpt4 book ai didi

java - 如何使用 Apache POI 将带边框的图像添加到 Word 中的表格单元格中?

转载 作者:行者123 更新时间:2023-12-02 09:14:17 26 4
gpt4 key购买 nike

我正在尝试使用 Apache POI 将带边框的图片插入到 Microsoft Word 的表格中。我可以使用以下代码将图像添加到单元格中:

// table is a XWPFTable object instantiated earlier in the code
XWPFParagraph paragraph = table.getRow(0).getCell(0).addParagraph();
XWPFRun run = paragraph.createRun();
FileInputStream fis = new FileInputStream("C:\\ [filepath for the image]");
run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", 6217920, 3474720);

我尝试寻找为图像添加边框的方法,但在网上找不到任何资源。我发现了这个链接:Format Picture with Fill and Line using apache poi in Java但在这种情况下它没有帮助。

(具体来说,我想在图像周围添加一条 2 1/4 pt 粗的黑色实线)

有人知道如何实现这一目标吗?提前致谢。

最佳答案

一如既往,如果当前高电平apache poi类不提供一些Office Open XML功能,请执行以下操作:

首先执行提供的操作并查看底层 XML你被创造了。在这种情况下,请执行以下操作:

// table is a XWPFTable object instantiated earlier in the code
XWPFParagraph paragraph = table.getRow(0).getCell(0).addParagraph();
XWPFRun run = paragraph.createRun();
FileInputStream fis = new FileInputStream("C:\\ [filepath for the image]");
XWPFPicture picture = run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", Units.pixelToEMU(300), Units.pixelToEMU(150));
System.out.println(picture.getCTPicture());

你会得到类似的东西:

<xml-fragment xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:rel="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<pic:nvPicPr>
<pic:cNvPr id="0" name="Picture 0" descr="Name"/>
<pic:cNvPicPr>
<a:picLocks noChangeAspect="true"/>
</pic:cNvPicPr>
</pic:nvPicPr>
<pic:blipFill>
<a:blip rel:embed="rId2"/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>
<pic:spPr>
<a:xfrm>
<a:off x="0" y="0"/>
<a:ext cx="2857500" cy="1428750"/>
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
</pic:spPr>
</xml-fragment>

现在打开 Word 中的结果并添加你想要的内容。在这种情况下,请在图片周围添加边框。然后保存结果,解压*.docx Zip存档并查看 /word/document.xml获取已更改的内容。

你会发现类似:

<a:ln w="28575">
<a:solidFill>
<a:srgbClr val="000000"/>
</a:solidFill>
</a:ln>

已添加至<pic:spPr> .

现在尝试使用低级别 ooxml-schema 创建它apache poi 的类别:

...
XWPFPicture picture = run.addPicture(fis, XWPFDocument.PICTURE_TYPE_PNG, "Name", Units.pixelToEMU(300), Units.pixelToEMU(150));
System.out.println(picture.getCTPicture());

picture.getCTPicture().getSpPr().addNewLn().setW(Units.toEMU(2.25));
picture.getCTPicture().getSpPr().getLn().addNewSolidFill().addNewSrgbClr().setVal(new byte[]{0,0,0});
System.out.println(picture.getCTPicture());
...

关于java - 如何使用 Apache POI 将带边框的图像添加到 Word 中的表格单元格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59131330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com