2009-12-07 45 views

回答

0

試試這個:http://www.dancrintea.ro/doc-to-pdf/

除了在MS Word文件也替換字符串: - 讀/使用寫入Excel文件簡化的API,如:getCell(X,Y)和setCell(X,Y,字符串) - 隱藏Excel工作表(例如次級計算) - 在DOC替換圖像,ODT和SXW文件 - 並轉換:

DOC - > PDF,HTML,TXT,RTF XLS - > PDF,HTML ,csv ppt - > pdf,swf

2

我建議在Apache POI庫:

http://poi.apache.org/

尋找更多 - 它看起來像它沒有被及時更新 - 噓!然而,現在可能已經足夠完成你需要的任務了。

5

雖然了Apache POI微軟Word支持,這不是很好。使用除最基本格式之外的任何文件加載並保存文件可能會影響佈局。你應該嘗試一下,也許它適合你。

還有一些商業圖書館,但我不知道他們是否有更好的。

最近在處理類似需求時,我不得不解決的糟糕的「解決方案」是使用格式DOCX,打開ZIP容器,讀取文檔XML,然後用正確的文本替換我的標記。這不更換文本的簡單位而不段落等

private static final String WORD_TEMPLATE_PATH = "word/word_template.docx"; 
private static final String DOCUMENT_XML = "word/document.xml"; 

/*....*/ 

final Resource templateFile = new ClassPathResource(WORD_TEMPLATE_PATH); 

final ZipInputStream zipIn = new ZipInputStream(templateFile.getInputStream()); 
final ZipOutputStream zipOut = new ZipOutputStream(output); 

ZipEntry inEntry; 
while ((inEntry = zipIn.getNextEntry()) != null) { 
    final ZipEntry outEntry = new ZipEntry(inEntry.getName()); 
    zipOut.putNextEntry(outEntry); 

    if (inEntry.getName().equals(DOCUMENT_XML)) { 
     final String contentIn = IOUtils.toString(zipIn, UTF_8); 
     final String outContent = this.processContent(new StringReader(contentIn)); 
     IOUtils.write(outContent, zipOut, UTF_8); 
    } else { 
     IOUtils.copy(zipIn, zipOut); 
    } 

    zipOut.closeEntry(); 
} 

zipIn.close(); 
zipOut.finish(); 

我不感到自豪的工作,但它的工作原理。

+1

創意,雖然是駭人聽聞的解決方案!爲我完美工作。但是,您必須小心在文檔中鍵入標記的方式。有時,Word會將標記關鍵字分成兩個XML標記,如:' hello world!'。只要你輸入完整的標記詞而不改變中間的光標位置,就顯示工作正常。 – Michael 2015-07-01 21:04:07