用java生成word文檔 |
poi是apache的一個項目,不過就算用poi你可能都覺得很煩,不過不要緊,這裏提供了更加簡單的一個接口給你:
下載經過封裝後的poi包: 下載之後,放到你的classpath就可以了,下面是如何使用它的一個例子: import java.io.*; import org.textmining.text.extraction.WordExtractor; /** * Title: pdf extraction * Description: email:[email protected] * Copyright: Matrix Copyright (c) 2003 * Company: Matrix.org.cn * @author chris * @version 1.0,who use this example pls remain the declare */ public class PdfExtractor { public PdfExtractor() { } public static void main(String args[]) throws Exception { FileInputStream in = new FileInputStream ("c://a.doc"); WordExtractor extractor = new WordExtractor(); String str = extractor.extractText(in); System.out.println("the result length is"+str.length()); System.out.println("the result is"+str); } } 如果沒有這個包呢?就是下面這段了 read word: 代碼
write word
代碼
寫操作的代碼還是有些問題:打開WORD時提示要選擇字符類型 希望能改進! 這樣寫文件有問題,因爲不是word格式。 當然這幾個jar是少不了的 如果要直接用Jakarta POI HWPF,沒提供編譯好的下載,只是原碼了,自己編譯吧
jakarta POI開源項目組HWPF(在下載後的scratchpad目錄裏)是操作word文檔,在這裏作了個簡單的例子
下載地址:http://www.apache.org/dist/jakarta/Poi/ <!--age contentType="text/html; charset=GBK" import="java.io.*,org.apache.poi.hwpf.HWPFDocument,org.apache.poi.hwpf.usermodel.*,org.apache.poi.hwpf.model.*"--> <!--r /> HWPFDocument doc = new HWPFDocument(new FileInputStream("g://a.doc"));<br /> Range r = doc.getRange (); //取得word文檔的範圍<br /> StyleSheet styleSheet = doc.getStyleSheet ();<br /> <br /> int sectionLevel = 0;<br /> int lenParagraph = r.numParagraphs ();//取得段落數<br /> int c=r.numCharacterRuns();<br /> int b=r.numSections();<br /> String s=r.text();<br /> boolean inCode = false;<br /> // Paragraph p;<br /> for (int x = 0; x < lenParagraph; x++)<br /> {<br /> Paragraph p = r.getParagraph (x);<br /> <br /> String text = p.text ();<br /> --> <!--ex--> <!--r /> if (text.trim ().length () == 0)<br /> {<br /> continue;<br /> }<br /> <br /> <br /> }<br /> <br /> //doc.write(new FileOutputStream("g://b.doc"));<br /> <br /> <br /> <br /> --> char: section: text:
java操作word,可以試試java2word
java2word 是一個在java程序中調用 MS Office Word 文檔的組件(類庫)。該組件提供了一組簡單的接口,以便java程序調用他的服務操作Word 文檔。 用java生成word文檔這幾日, 公司有個項目, 要用java生成word文檔, 在網上找來找去也沒有找到好的生成word文檔的庫, 找到apache的POI可以使用, 但是所有的release版中也沒有支持word的class. 只能從svn上下載源代碼編譯.
後來發現java支持rtf格式的文檔, word也支持, 於是乎便使用此產生word文檔了. 呵呵.. java支持的rtf文檔功能不是很強大, 我們可以藉助於一些開源的庫, 比如: itext就可以很好的支持. itext上有很多例子, 有興趣的可以上去看一下, 這裏就不摘錄了. 但是itext比較大要1.4M, 不是很喜歡. 在sf上找來找去, 發現一個更小的庫, 儘管功能不是很強大, 基本的功能都有, 他就是srw(Simple RTF Writer目前它的版本是0.6,好久都沒有人維護了). srw內置了很多例子, 例如: 我們要寫一個簡單的rtf, 我們只需要這麼寫: public class TestSimpleRtf { private static final String FILE_NAME = "out_testsimplertf.rtf"; public static void main(String[] args) { try { // RTF Dokument generieren (in Querformat) RTFDocument doc = new RTFDocument(PageSize.DIN_A4_QUER); // Anzeige-Zoom und Ansicht definieren doc.setViewscale(RTFDocument.VIEWSCALE_FULLPAGE); // Anzeige-Zoom auf "komplette Seite" einstellen doc.setViewkind(RTFDocument.VIEWKIND_PAGELAYOUT); // ViewMode auf Seitenlayout stellen Paragraph absatz = new Paragraph(18, 0, 16, Font.ARIAL, new TextPart("Simple RTF Writer Testdokument")); absatz.setAlignment(Paragraph.ALIGN_CENTER); doc.addParagraph(absatz); File savefile = new File(FILE_NAME); doc.save(savefile); System.out.println("Neues RTF Dokument erstellt: " + savefile.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } } 用法很簡單, 但是功能很少, 比如沒有table的功能, 不能設置打印方向等問題. 不過這個基本上就夠用了. 後來, 我們的項目要求橫向打印, 這可難壞了. 沒辦法, 自己查找word的rtf格式庫, 拓展橫向打印功能, 目前已經完成... import com.itseasy.rtf.RTFDocument; import com.itseasy.rtf.text.PageSize; public class MyRTFDocument extends RTFDocument { public static final int ORIENTATION_PORTRAIT = 0; public static final int ORIENTATION_LANDSCAPE = 1; private int orientation; /** * */ public MyRTFDocument() { super(); } /** * @param arg0 */ public MyRTFDocument(PageSize arg0) { super(arg0); } /* (non-Javadoc) * @see com.itseasy.rtf.RTFDocument#getDocumentAsString() */ protected String getDocumentAsString() { StringBuffer sb = new StringBuffer(super.getDocumentAsString()); int pos = -1; if (ORIENTATION_LANDSCAPE == orientation) { pos = sb.indexOf("paperw"); if (pos > 0) { sb.insert(pos, "lndscpsxn"); } } pos = 0; while((pos = sb.indexOf("pardplain", pos)) > 0){ pos = sb.indexOf("{", pos); sb.insert(pos, "dbchaf2"); } return sb.toString(); } /** * @return Returns the orientation. */ public int getOrientation() { return orientation; } /** * @param orientation The orientation to set. */ public void setOrientation(int orientation) { this.orientation = orientation; } } 在最近的一個項目中需要將一段字符類型的文本存爲word,html並要將word的內容保存在數據庫中,於是就有了如下的一個工具類,希望能對碰到這樣需求的朋友提供點幫助。
匆匆忙忙的就copy上來了,沒有做一些刪減,有一些多餘的東西,有興趣的朋友可以自行略去。我的註釋相對比較清楚,可以按照自己的需求進行組合。 在操作word的地方使用了jacob(jacob_1.9),這個工具網上很容易找到,將jacob.dll放置系統Path中,直接放在system32下也可以,jacob.jar放置在classPath中。 代碼如下:WordBridge.java /** * WordBridge.java */ package com.kela.util; import java.io.ByteArrayInputStream; import org.apache.commons.logging.Log; import com.jacob.activeX.ActiveXComponent; /**
/** /** /** /** /** /** /** Connection conn = null; pstmt = conn.prepareStatement(sql); |
用java生成word文檔(轉載)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.