将HTML转为word

阅读更多

项目中客户需要将FCKeditor编辑的内容存为word下载,FCKeditor编辑的内容为HTML代码存储到数据库一个字段。

整个过程中需要注意,如果是字符串需要将“”标签给包括进去,否则无法识别,转换后的word就是html源代码

两种方式:

文后附poi.jar包,另jcob包见本文章http://ourteam.iteye.com/admin/blogs/1167962

jacob包需要将jacob.dll放到windows/system32下

一、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 = "
" + "制度发布通知

"; 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方式

代码:

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);
	}

 

  • poi3.0.jar (836.4 KB)
  • 下载次数: 251

你可能感兴趣的:(html到word,jacob,poi)