2014-03-24 41 views
1

我需要做以下(在Grails):Grails的 - 閱讀,定製並附加一個Word文檔

  1. 閱讀Word模板
  2. 添加用戶的詳細信息(如姓名,姓)到文檔
  3. 通過郵件發送定製字

我想到了Apache POI讀取.DOC,然後在我的文檔將具有關鍵字,例如「°!」#$「並進行定製。 然後我將創建文檔,發送它(使用Grails插件)並從服務器中刪除文檔

這是一個好方法還是我忘記了一些東西? 非常感謝您

編輯: DOCx4j:我DOCX操作簡單,這樣我就可以在變量「辦法1」去替換, 但由於某些原因下一個樣品不工作對我來說: https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/VariableReplace.java

我得到一個:

| Error 2014-03-27 09:10:23,640 [http-bio-9000-exec-5] ERROR errors.GrailsExceptionResolver - SAXParseException occurred when processing request: [POST] /Estrategia/pasantiaCorta/generarDocumento 
Content is not allowed in prolog.. Stacktrace follows: 
Message: Content is not allowed in prolog. 

在行:

//方法1(3.0.0;更快,如果你還沒有導致解組發生):

documentPart.variableReplace(mappings); 
+0

這種方法根本沒有錯。它與我們已經做的非常相似,但我們使用JasperReports來生成PDF。 –

回答

1

當然,您可以使用POI或docx4j。對於任何一種,使用docx而不是傳統的二進制文檔格式會更好。

對於docx4j(我的項目),請參閱creating-word-docx-documents-dynamically-from-grails

在你的第2步(添加用戶詳細信息),也有variety of approaches就可以使用。

+0

非常感謝Jason;我選擇了docx4j來嘗試它; 請閱讀新的編輯! – Alberici

+0

「內容在prolog中是不允許的」是XML解析器抱怨你在某個XML文檔的開始處有垃圾字符 - 可能是你的docx的「部分」。不是docx4j和正確的docx文件的已知錯誤。你有堆棧跟蹤嗎?如果你可以把一個docx引起這個錯誤在線的地方,我會檢查docx4j(沒有grails)如何處理它。或者你可以自己把它上傳到docx4j webapp。 – JasonPlutext

+0

哎呀,這是尷尬。我正在尋找不同的解決方案,但你又是對的;問題是我試圖使用的docx! (它有「修訂」,所以如果你使用的是VariableReplace,你需要先調用VariablePrepare)非常感謝,現在一切正常:) – Alberici