日期:2014-05-20  浏览次数:20790 次

50分请高手指点一下
有一个题库管理系统,难度系数共分5级,1级容易、2级较容易、3级一般、4级较难、5级难,从中抽出一定的题,组成一套试题,还要生成试题头,生成的试卷能用WORD来进行保存,修改等,请高手指点一下,试卷的生成应该怎么做,最好能给一部分代码参考.

------解决方案--------------------
java生成word,html文件并将内容保存至数据库
Posted on 2005-12-15 17:19 Kela 阅读(2715) 评论(3) 编辑 收藏 引用
在最近的一个项目中需要将一段字符类型的文本存为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) {
Dispatch.call(document, "SaveAs ", filename);
}

/**
* 将word转换成html
* @param htmlFilePath
*/
public void wordToHtml(String htmlFilePath) {
Dispatch.invoke(document, "SaveAs ", Dispatch.Method, new Object[]{htmlFilePath,new Variant(8)}, new int[1]);
}

/**
* 保存word的同时,保存一个html
* @param text 需要保存的内容
* @param wordFilePath word的路径
* @param htmlFilePath html的路径
* @throws LTOAException
*/
public void wordAsDbOrToHtml(String text, String wordFilePath, String htmlFilePath) throws LTOAException {