最近拿到一个老项目,用到了weboffice ,无奈网上找找收藏学习
首先需要导入jar包iweboffice.jar
后台操作代码如下:
package weboffice;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WebOfficeServeltAction extends HttpServlet {
private DBstep.iMsgServer2000 MsgObj = new DBstep.iMsgServer2000(); // 创建服务对象
public WebOfficeServeltAction() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
System.out.println("进来了");
String mOption = "";
String mUserName = "";
String mRecordID = "";
String mTemplate = "";
byte[] mFileBody = null;
String mFileName = "";
String mFileType = "";
String mDescript = "";
int mFileSize = 0;
if (request.getMethod().equalsIgnoreCase("POST")) {
MsgObj.MsgVariant(ReadPackage(request));
if (MsgObj.GetMsgByName("DBSTEP").equalsIgnoreCase("DBSTEP")){// 如果是合法的信息包
mOption=MsgObj.GetMsgByName("OPTION") ; //取得操作类型
System.out.println("操作类型==="+mOption);
if(mOption.equalsIgnoreCase("SAVEFILE")){
mRecordID=MsgObj.GetMsgByName("RECORDID"); //取得文档编号
mFileName=MsgObj.GetMsgByName("FILENAME"); //取得文档名称
mFileType=MsgObj.GetMsgByName("FILETYPE"); //取得文档类型
mFileSize=MsgObj.MsgFileSize(); //取得文档大小
mUserName= MsgObj.GetMsgByName("USERNAME"); //取得保存用户名称
//此处可以解决乱码问题
mFileBody=MsgObj.MsgFileBody(); //取得文档内容
mFileBody=MsgObj.ToDocument(mFileBody);//进行分离操作
MsgObj.MsgFileBody(mFileBody); //将分离后的文档数据读入组件对象
mDescript="通用版本"; //版本说明
MsgObj.MsgTextClear();// 清除文本信息
//文档信息内容保存到数据库中或者文件中
//以保存到文件为例
boolean flag = MsgObj.MsgFileSave("F:/test/"+mFileName);
if (flag){//保存文档内容
MsgObj.SetMsgByName("STATUS", "保存成功!"); //设置状态信息
MsgObj.MsgError(""); //清除错误信息
}else{
MsgObj.MsgError("保存失败!"); //设置错误信息
}
MsgObj.MsgFileClear();
}
//打开
if(mOption.equalsIgnoreCase("LOADFILE")){
mRecordID = MsgObj.GetMsgByName("RECORDID"); // 取得文档编号
mFileName = MsgObj.GetMsgByName("FILENAME"); // 取得文档名称
mFileType = MsgObj.GetMsgByName("FILETYPE"); // 取得文档类型
MsgObj.MsgTextClear(); // 清除文本信息
//如果对数据库操作,只要把数据库中文档的内容付给MsgObj.MsgFileBody就可以了
//通过mRecordID找到数据库中的记录,然后将数据库中的文件流付给mFileBody
if (MsgObj.MsgFileLoad("F:/test/"+mFileName+mFileType)){//调入文档
//MsgObj.MsgFileBody(mFileBody);//从数据库中读取时用
MsgObj.SetMsgByName("STATUS","打开成功!"); // 设置状态信息
MsgObj.MsgError(""); // 清除错误信息
} else {
MsgObj.MsgError("打开失败!"); //打开失败! 设置错误信息
}
}
//修改
if (mOption.equalsIgnoreCase("MODIFYFILE")){
MsgObj.GetMsgByName("ATTACHID");//获得ID
//通过ID取得记录及相应信息
MsgObj.MsgTextClear(); // 清除文本信息
if (MsgObj.MsgFileSave("F:/test/"+mFileName+mFileType)){// 保存文件此处添路径
MsgObj.SetMsgByName("STATUS", "保存成功!"); // 设置状态信息 保存成功
MsgObj.SetMsgByName("ATTACHID", "");//此处存取记录编号
MsgObj.MsgError(""); // 清除错误信息
} else {
MsgObj.MsgError("保存失败!"); // 设置错误信息 保存失败!
}
MsgObj.MsgFileClear();
}
}else {
MsgObj.MsgError("数据包错误!");//客户端发送数据包错误!
MsgObj.MsgTextClear();
MsgObj.MsgFileClear();
}
}else {
MsgObj.MsgError("请使用POST方法");//必须使用POST方法!
MsgObj.MsgTextClear();
MsgObj.MsgFileClear();
}
SendPackage(response);
}
public void init() throws ServletException {
//生成对象实例:
MsgObj=new DBstep.iMsgServer2000();
}
//取得客户端发来的数据包
private byte[] ReadPackage(HttpServletRequest request){
byte mStream[]=null;
int totalRead = 0;
int readBytes = 0;
int totalBytes = 0;
try{
totalBytes = request.getContentLength();
mStream = new byte[totalBytes];
while(totalRead < totalBytes){
request.getInputStream();
readBytes = request.getInputStream().read(mStream, totalRead, totalBytes - totalRead);
totalRead += readBytes;
continue;
}
}
catch (Exception e){
System.out.println(e.toString());
}
return (mStream);
}
//发送处理后的数据包
private void SendPackage(HttpServletResponse response){
try{
ServletOutputStream OutBinarry=response.getOutputStream() ;
OutBinarry.write(MsgObj.MsgVariant()) ;
OutBinarry.flush();
OutBinarry.close();
}
catch(Exception e){
System.out.println(e.toString());
}
}
}