Java 使用docx4j(或任何其他api)将excel附加到.docx

Java 使用docx4j(或任何其他api)将excel附加到.docx,java,excel,document,attachment,docx4j,Java,Excel,Document,Attachment,Docx4j,目前我正在从事一个项目,该项目需要自动生成文档。到目前为止,我成功地使用docx4j将占位符替换为.docx上用户输入的字段,并在占位符上添加了.png图像。 现在,我需要在.docx上的特定占位符上附加一个excel工作表。请给我一些技巧来做同样的事情 谢谢。您应该将xlsx添加为 主文档部分需要使用类似于以下内容的XML指向它: <w:p> <w:r> <w:obje

目前我正在从事一个项目,该项目需要自动生成文档。到目前为止,我成功地使用docx4j将占位符替换为.docx上用户输入的字段,并在占位符上添加了.png图像。 现在,我需要在.docx上的特定占位符上附加一个excel工作表。请给我一些技巧来做同样的事情


谢谢。

您应该将xlsx添加为

主文档部分需要使用类似于以下内容的XML指向它:

            <w:p>
                <w:r>
                    <w:object w:dxaOrig="23793" w:dyaOrig="13287">
                        <v:shapetype stroked="f" filled="f" o:spt="75.0" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" coordsize="21600,21600" id="_x0000_t75">
                            <v:stroke joinstyle="miter"/>
                            <v:formulas>
                                <v:f eqn="if lineDrawn pixelLineWidth 0"/>
                                <v:f eqn="sum @0 1 0"/>
                                <v:f eqn="sum 0 0 @1"/>
                                <v:f eqn="prod @2 1 2"/>
                                <v:f eqn="prod @3 21600 pixelWidth"/>
                                <v:f eqn="prod @3 21600 pixelHeight"/>
                                <v:f eqn="sum @0 0 1"/>
                                <v:f eqn="prod @6 1 2"/>
                                <v:f eqn="prod @7 21600 pixelWidth"/>
                                <v:f eqn="sum @8 21600 0"/>
                                <v:f eqn="prod @7 21600 pixelHeight"/>
                                <v:f eqn="sum @10 21600 0"/>
                            </v:formulas>
                            <v:path gradientshapeok="t" o:connecttype="rect" o:extrusionok="f"/>
                            <o:lock aspectratio="t" v:ext="edit"/>
                        </v:shapetype>
                        <v:shape type="#_x0000_t75" style="width:1189.5pt;height:664.5pt" id="_x0000_i1025" o:ole="">
                            <v:imagedata o:title="" r:id="rId5"/>
                        </v:shape>
                        <o:OLEObject Type="Embed" ProgID="Excel.Sheet.12" ShapeID="_x0000_i1025" DrawAspect="Content" ObjectID="_1479233503" r:id="rId6"/>
                    </w:object>
                </w:r>
            </w:p>

注意2个rel id;在本例中,rId6指向Emmbed部分,rId5指向要显示在文档表面上的图像(您需要自己创建)


您可以自己编写代码来生成上面的代码。或者,商业docx企业版也可以为您提供此功能。

您是否可以共享此功能的代码?在网上找不到关于这个的任何信息。我是docx4j的新手。@PraveEnKamaTh如上所述:“您可以自己编写代码生成上述内容。或者,商业docx企业版也可以为您这样做。”好的,我已成功地将excel附加到docx。。。。。现在的问题是它需要同时接受xls和xlsx文件格式。要将.xls附加到.docx的代码:OleObjectBinaryPart olePart=new OleObjectBinaryPart();olePart.setBinaryData(oleFile);Relationship relOleObject=template.getMainDocumentPart().addTargetPart(olePart);请提供将.xlsx附加到.docx的解决方案