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表達式的應用。
以上就是本文的全體內容,願望對年夜家的進修有所贊助。