日期:2014-05-17 浏览次数:20807 次
有两种方式实现:
一.apache.poi
代码如下:
public static boolean writeWordFile() { boolean w = false; String path = "d:/"; try { if (!"".equals(path)) { // 检查目录是否存在 File fileDir = new File(path); if (fileDir.exists()) { // 生成临时文件名称 String fileName = "a.doc"; String content = "<html><div style=\"text-align: center\"><span style=\"font-size: 28px\"><span style=\"font-family: 黑体\">" + "制度发布通知<br /> <br /> </span></span></div></html>"; byte b[] = content.getBytes(); ByteArrayInputStream bais = new ByteArrayInputStream(b); POIFSFileSystem poifs = new POIFSFileSystem(); DirectoryEntry directory = poifs.getRoot(); DocumentEntry documentEntry = directory.createDocument("WordDocument", bais); FileOutputStream ostream = new FileOutputStream(path+ fileName); poifs.writeFilesystem(ostream); bais.close(); ostream.close(); } } } catch (IOException e) { e.printStackTrace(); } return w; }
二.JACOB方式
notes:jacob包需要将jacob.dll放到windows/system32下
代码如下:
public static void htmlToWord(String html, String docFile) { ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word try { app.setProperty("Visible", new Variant(false)); Dispatch docs = app.getProperty("Documents").toDispatch(); Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] { html, new Variant(false), new Variant(true) }, new int[1]).toDispatch(); Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { docFile, new Variant(1) }, new int[1]); Variant f = new Variant(false); Dispatch.call(doc, "Close", f); } catch (Exception e) { e.printStackTrace(); } finally { app.invoke("Quit", new Variant[] {}); ComThread.Release(); } } public static void main(String[] args){ String fileName = "D:\\a.doc"; String content = "D:\\a.html"; htmlToWord(content,fileName); }