java導出身成word的簡略辦法。本站提示廣大學習愛好者:(java導出身成word的簡略辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java導出身成word的簡略辦法正文
比來做的項目,須要將一些信息導出到word中。在網上找了很多多少處理計劃,如今將這幾天的總結分享一下。
今朝來看,java導出word年夜致有6種處理計劃:
1、Jacob是Java-COM Bridge的縮寫,它在Java與微軟的COM組件之間構建一座橋梁。應用Jacob自帶的DLL靜態鏈接庫,並經由過程JNI的方法完成了在Java平台上對COM法式的挪用。DLL靜態鏈接庫的生成須要windows平台的支撐。該計劃只能在windows平台完成,是其局限性。
2、Apache POI包含一系列的API,它們可以操作基於MicroSoft OLE 2 Compound Document Format的各類格局文件,可以經由過程這些API在Java中讀寫Excel、Word等文件。他的excel處置很壯大,關於word還局限於讀取,今朝只能完成一些簡略文件的操作,不克不及設置款式。
3、Java2word是一個在java法式中挪用 MS Office Word 文檔的組件(類庫)。該組件供給了一組簡略的接口,以便java法式挪用他的辦事操作Word 文檔。 這些辦事包含: 翻開文檔、新建文檔、查找文字、調換文字,拔出文字、拔出圖片、拔出表格,在書簽處拔出文字、拔出圖片、拔出表格等。填湊數據到表格中讀取表格數據 ,1.1版加強的功效: 指定文本款式,指定表格款式。如斯,則可靜態排版word文檔。是一種不錯的處理計劃。
4、iText是有名的開放源碼的站點sourceforge一個項目,是用於生成PDF文檔的一個java類庫。經由過程iText不只可以生成PDF或rtf的文檔,並且可以將XML、Html文件轉化為PDF文件。功效壯大。
5、JSP輸入款式,該計劃完成簡略,然則處置款式有點缺點,簡略的導出可使用。
6、用XML做就很簡略了。Word從2003開端支撐XML格局,年夜致的思緒是先用office2003或許2007編纂好word的款式,然後另存為xml,將xml翻譯為FreeMarker模板,最初用java來解析FreeMarker模板並輸入Doc。經測試如許方法生成的word文檔完整相符office尺度,款式、內容掌握異常方便,打印也不會變形,生成的文檔和office中編纂文檔完整一樣。
綜合以上材料的參考,和網上的一些看法,最初我選擇了,第6種用xml做導出計劃。
上面是根本的例子,以完成簡略的word導出:
要導出的word模板的內容,啟動拼音部門為要在代碼種調換的部門。 :
然後將word另存為.xml文件,翻開文件,找到title將其修正為${title},前面要調換的內容順次調換失落。然後將.xml文件後綴改成.ftl,導入.ftl模板文件到指定目次。加載jar包freemarker.jar。開端寫代碼:
重要代碼:
public class WordTest { private Configuration configuration = null; public WordTest(){ configuration = new Configuration(); configuration.setDefaultEncoding("UTF-8"); } public static void main(String[] args) { WordTest test = new WordTest(); test.createWord(); } public void createWord(){ Map<String,Object> dataMap=new HashMap<String,Object>(); getData(dataMap); configuration.setClassForTemplateLoading(this.getClass(), "");//模板文件地點途徑 Template t=null; try { t = configuration.getTemplate("測試.ftl"); //獲得模板文件 } catch (IOException e) { e.printStackTrace(); } File outFile = new File("D:/outFile"+Math.random()*10000+".doc"); //導出文件 Writer out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile))); } catch (FileNotFoundException e1) { e1.printStackTrace(); } try { t.process(dataMap, out); //將填湊數據填入模板文件並輸入到目的文件 } catch (TemplateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private void getData(Map<String, Object> dataMap) { dataMap.put("title", "題目"); dataMap.put("nian", "2016"); dataMap.put("yue", "3"); dataMap.put("ri", "6"); dataMap.put("shenheren", "lc"); List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); for (int i = 0; i < 10; i++) { Map<String,Object> map = new HashMap<String,Object>(); map.put("xuehao", i); map.put("neirong", "內容"+i); list.add(map); } dataMap.put("list", list); } }
修正.ftl文件,找到列表地點地位,將其要參加的列表參加到文件中。在列表前參加<#list list as l>(在它的頭上加一個<#list 你的聚集稱號 as xxxx>),並在開頭加上</#list>。修正list內容,在要輸入的名字後面加上l.。如xuehao,修正為l.xuehao。如許有點像EL表達式的應用。
以上就是本文的全體內容,願望對年夜家的進修有所贊助。