日期:2014-05-16  浏览次数:20371 次

java生成word,html文件并将内容保存至数据库
在最近的一个项目中需要将一段字符类型的文本存为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 java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import com.kela.db.PoolingDataSource;

/**
* 说明: 对word的操作 <p>
*
* @author   kela.kf@gmail.com
*/
public class WordBridge {

   Log log = LogFactory.getLog("WordBridgt");

   private ActiveXComponent MsWordApp = null;
   private Dispatch document = null;
   
    /**
     * 打开word
     * @param makeVisible, true显示word, false不显示word
     */
    public void openWord(boolean makeVisible) {
       if (MsWordApp == null) {
         MsWordApp = new ActiveXComponent("Word.Application");
       }
 
       Dispatch.put(MsWordApp, "Visible", new Variant(makeVisible));
    }

    /**
     * 创建新的文档
     *
     */
    public void createNewDocument() {
       Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch();
       document = Dispatch.call(documents, "Add").toDispatch();
    }

    /**
     * 关闭文档
     */
    public void closeDocument() {
      // 0 = wdDoNotSaveChanges
      // -1 = wdSaveChanges
      // -2 = wdPromptToSaveChanges
      Dispatch.call(document, "Close", new Variant(0));
      document = null;
    }

    /**
     * 关闭word
     *
     */
    public void closeWord() {
       Dispatch.call(MsWordApp, "Quit");
       MsWordApp = null;
       document = null;
    }

    /**
     * 插入文本
     * @param textToInsert 文本内容
     */
    public void insertText(String textToInsert) {
       Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch();
       Dispatch.put(selection, "Text", textToInsert);
    }

    /**
     * 保存文件
     * @param filename
     */
    public void saveFileAs(String filename) {
      Di