程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java導出身成word的簡略辦法

java導出身成word的簡略辦法

編輯:關於JAVA

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表達式的應用。

以上就是本文的全體內容,願望對年夜家的進修有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved