社区
Java SE
帖子详情
50分请高手指点一下
edisonlzk
2007-08-27 05:52:27
有一个题库管理系统,难度系数共分5级,1级容易、2级较容易、3级一般、4级较难、5级难,从中抽出一定的题,组成一套试题,还要生成试题头,生成的试卷能用WORD来进行保存,修改等,请高手指点一下,试卷的生成应该怎么做,最好能给一部分代码参考.
...全文
234
4
打赏
收藏
50分请高手指点一下
有一个题库管理系统,难度系数共分5级,1级容易、2级较容易、3级一般、4级较难、5级难,从中抽出一定的题,组成一套试题,还要生成试题头,生成的试卷能用WORD来进行保存,修改等,请高手指点一下,试卷的生成应该怎么做,最好能给一部分代码参考.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
edisonlzk
2007-08-28
打赏
举报
回复
还有一个问题,排版的问题应该怎么办啊?
fkue23
2007-08-27
打赏
举报
回复
学习
eunice_zrx
2007-08-27
打赏
举报
回复
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 {
try {
openWord(false);
createNewDocument();
insertText(text);
saveFileAs(wordFilePath);
wordToHtml(htmlFilePath);
} catch (Exception ex) {
log.error("错误 - 对word的操作发生错误");
log.error("原因 - " + ex.getMessage());
throw new LTOAException(LTOAException.ERR_UNKNOWN, "对word的操作发生错误("
+ this.getClass().getName() + ".wordAsDbOrToHtml())", ex);
} finally {
closeDocument();
closeWord();
}
}
/**
* 将word保存至数据库
* @param wordFilePath
* @param RecordID
* @throws LTOAException
*/
public void wordAsDatabase(String wordFilePath, String RecordID) throws LTOAException {
Connection conn = null;
PreparedStatement pstmt = null;
PoolingDataSource pool = null;
File file = null;
String sql = "";
try {
sql = " UPDATE Document_File SET FileBody = ? WHERE RecordID = ? ";
pool = new PoolingDataSource();
conn = pool.getConnection();
file = new File(wordFilePath);
InputStream is = new FileInputStream(file);
byte[] blobByte = new byte[is.available()];
is.read(blobByte);
is.close();
pstmt = conn.prepareStatement(sql);
pstmt.setBinaryStream(1,(new ByteArrayInputStream(blobByte)), blobByte.length);
pstmt.setString(2, RecordID);
pstmt.executeUpdate();
} catch (Exception ex) {
log.error("错误 - 表 Document_File 更新数据发生意外错误");
log.error("原因 - " + ex.getMessage());
throw new LTOAException(LTOAException.ERR_UNKNOWN,
"表Document_File插入数据发生意外错误("
+ this.getClass().getName() + ".wordAsDatabase())", ex);
} finally {
pool.closePrepStmt(pstmt);
pool.closeConnection(conn);
}
}
/**
* 得到一个唯一的编号
* @return 编号
*/
public String getRecordID() {
String sRecordID = "";
java.util.Date dt=new java.util.Date();
long lg=dt.getTime();
Long ld=new Long(lg);
sRecordID =ld.toString();
return sRecordID;
}
/**
* 得到保存word和html需要的路径
* @param systemType 模块类型 givInfo, sw, fw
* @param fileType 文件类型 doc, html
* @param recID 文件编号
* @return 路径
*/
public String getWordFilePath(String systemType, String fileType, String recID) {
String filePath = "";
File file = new File(this.getClass().getResource("/").getPath());
filePath = file.getPath().substring(0, file.getPath().length() - 15);
if(systemType.equalsIgnoreCase("govInfo")) {
if(fileType.equalsIgnoreCase("doc"))
filePath = filePath + "/uploadFiles/govInfo/document/" + recID + ".doc";
else if(fileType.equalsIgnoreCase("htm"))
filePath = filePath + "/HTML/govInfo/" + recID + ".htm";
} else if(systemType.equalsIgnoreCase("sw")){
if(fileType.equalsIgnoreCase("doc"))
filePath = filePath + "/uploadFiles/sw/document/" + recID + ".doc";
else if(fileType.equalsIgnoreCase("htm"))
filePath = filePath + "/HTML/sw/" + recID + ".htm";
} else if(systemType.equalsIgnoreCase("fw")) {
if(fileType.equalsIgnoreCase("doc"))
filePath = filePath + "/uploadFiles/fw/document/" + recID + ".doc";
else if(fileType.equalsIgnoreCase("htm"))
filePath = filePath + "/HTML/fw/" + recID + ".htm";
}
return filePath;
}
}
边城狂人
2007-08-27
打赏
举报
回复
生成Word,似乎可以尝试一下POI,不过自从我上次了解POI以来,已经有5年了,所以不知道现在它对Word的支持情况如何。
请
高手
指点
图片居中的问题
请
高手
指点
一下
,想把图片水平垂直居中放置,网上找了一些教程,但是没有作用,请帮忙指出哪里出了问题 本主题由 Rolan 于 前天 09:44 审核通过 1.jpg (
50
.38 KB, 下载次数: 2) (此图片来源于网络,如有...
原创Simulink基于瞬时功率理论的并联型APF模型求助-APF_ip_iq.mdl
现在的这个有点问题,合上APF后效果是非常明显,但是就是有尖峰,希望
高手
能够
指点
一下
(从现象来看,是滞环控制在指令电流突变的情况下,实际电流跟不上,但是滞环控制本身就具有很好的动态跟踪特性,很是费解),...
关于can总线通信的一些经验总结1
关于can的一些经验总结 ...小弟还没有入门,大虾们
指点
一下
。 答1:直接将节点CANH和CANL连到总线上,终端电阻接在总线两端,大约120欧。 答2: 推荐北航出版《现场总线CAN原理与应用技术》,研读
一下
。
月儿猫猫ASP生成HTML全站静态客户体验专业版.rar
高手
指点
) c)表单SQL过滤 13.超快速无组件上传功能(比原装化境快
50
倍,通过原化境和网上资料修改而成),可以设定大小和上传类型。 14.W3C优化,兼容firefox 和IE. 15.HTML生成页面之前可以设置生成的参数,如...
解决红外摄像机晚上看不清的问题
请哪位
高手
指点
一下
. 答: 一:线路方面 1,白色闭路线,应该不是视频线。如果是用作有线电视用的叫射频线。视频线一般是黑色的。不过您的距离近问题不大,这个问题不会使您这个红外摄像机效果灰蒙蒙的,以后...
Java SE
62,615
社区成员
307,318
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章