2014-12-04 77 views
0

目前我正在處理需要自動生成文檔的項目。到目前爲止,我成功地使用docx4j在.docx中用用戶輸入的字段替換佔位符,並在佔位符上添加了一個.png圖像。 現在,我需要在.docx上的特定佔位符上附加一個Excel表格。請給我建議一些技巧來做同樣的事情。將excel附加到使用docx4j(或任何其他api)的.docx

謝謝。

回答

1

您應該添加XLSX爲EmbeddedPackagePart

主文檔部件都需要指向它,使用類似於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="[email protected]@[email protected]@[email protected]@[email protected]@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個相對IDS;在這個例子中,rId6指向Emmbedded部分,rId5指向圖像出現在文檔表面(您需要自己創建)。

你可以編寫代碼來自己生成上述代碼。另外,商業docx企業版會爲你做。

+0

可以分享相同的代碼嗎?在網上找不到這方面的信息。我是docx4j的新手。 – 2014-12-04 11:39:19

+0

@PraveEnKamaTh如上:「您可以編寫代碼來生成上述自己。或者,*商業docx企業版將爲您做。*」 – Ben 2014-12-04 15:52:25

+0

好吧,我已成功將excel附加到docx .....現在問題是否需要接受xls和xlsx文件格式。 將.xls附加到.docx的代碼: OleObjectBinaryPart olePart = new OleObjectBinaryPart(); \t olePart.setBinaryData(oleFile); \t關係relOleObject = template.getMainDocumentPart()。addTargetPart(olePart); 請提供將.xlsx附加到.docx的解決方案 – 2015-01-15 12:37:26

相關問題