当前位置: 首页 > 知识库问答 >
问题:

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

薛阳荣
2023-03-14
// 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);

有人知道怎么做到这一点吗?提前谢了。

共有1个答案

昌勇锐
2023-03-14

一如既往,如果当前高级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>
<a:ln w="28575">
  <a:solidFill>
    <a:srgbClr val="000000"/>
  </a:solidFill>
</a:ln>
...
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());
...
 类似资料:
  • 我需要一个表格,第一行和第二行的单元格合并在一起。 大概是这样的: 桌子的图片(我不能张贴图片)http://i.stack.imgur.com/dAO6j.png 我一直在复习与本主题相关的所有问题,并找到了一些将网格跨度应用于单元的答案,但我找不到真正的解决方案。 以下是我从谷歌和本网站获得的示例代码: 我从这段代码中得到的信息如下: 我试图用

  • 对于某些表格单元格,我希望有一个多色的上边框或下边框。 基于如何创建多色边框与css和css-多色边框,我能够创建多色边框。 问题是,我想将其组合为一个表格单元格,其中一些单元格具有普通边框,而另一些单元格具有多色边框。 下面的代码设置单元格的多色,但只要我想为“普通”单元格添加黑色边框,它就会覆盖多色边框(请参见代码笔) 这似乎使它部分起作用,必须为表格设置背景颜色。但这会导致粗边框线。 能做些

  • 我正在创建一个新的PDF,其中将包含其他文档的汇编。 这些其他文档可以是word/excel/图像/PDF。 我希望将所有这些内容添加到表中的单元格中,该单元格被添加到文档中-这给了我自动添加页面的好处,将元素定位在单元格中而不是页面中,并允许我更轻松地将内容保持在与我提供的相同的顺序(如img,doc,pdf,img,pdf等) 向表中添加图像非常简单。 我正在将word/excel文档转换为P

  • 问题内容: 我有3 x 3的表格。我需要一种为每行底部添加边框并为其指定特定颜色的方法。 首先,我尝试了直接方式,即: 但这没有用。所以我像这样添加了CSS: 那仍然没有用。 我更喜欢使用CSS,因为这样我就不必在每一行中添加一个属性。我尚未向中添加属性。我希望那不会影响我的CSS。 问题答案: 我以前有这样的问题。我认为不能直接采用边框样式。我的解决方法是在行中设置s的样式: CSS:

  • 问题内容: 我开发了Eclipse RCP应用程序,并且遇到了问题。我们数据库中有一些布尔格式的数据,用户希望使用来查看该字段。 我试图使用来实现它作为 表编辑器 ,但它的工作速度太慢:( 我尝试使用2张图片-选中和未选中的复选框,都可以,但是我无法将它们居中对齐,它们会自动向左对齐。 我什至找到了如何捕获和事件以及如何通过更改字段手动处理它们,但是我遇到了一个问题- 我现在无法测量或绘制哪个列,