jsp显示word

wenxuanzhen 2013-01-29 02:08:47
我现在开发一个OA系统,需要把word显示在jsp页面上,word中可能有表格和图片,怎么实现啊?急急急!
...全文
321 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hundsun_2008 2013-02-05
  • 打赏
  • 举报
回复
引用 1 楼 xgapp 的回复:
有很多种方式。 比如微软有一款软件。基本邮箱都在用。但是是否是收费的就不知道了。 还有就是flashpaper 如果服务器是linux的就没法用了 还有就是flexpaper+swftools+openoffice的讨论。这个免费支持多系统
+1
wenxuanzhen 2013-02-05
  • 打赏
  • 举报
回复
感谢各位,我自己摸索已经实现了,用flashpaper转换显示,效果很好,但是在用java调用flashpaper转换时页面上会出现转换窗口,这个怎么隐藏啊?
rumlee 2013-01-31
  • 打赏
  • 举报
回复
可以试试金格的weboffice,我们一直用这个,感觉还不错。
356280207 2013-01-31
  • 打赏
  • 举报
回复
用组件,weboffice OK ~~
xiaomm627 2013-01-29
  • 打赏
  • 举报
回复

response.setHeader("Content-type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
// 设置下载头信息 
try {
	TransmitFile.downLoad(response, filepath);
	response.flushBuffer();
} catch (Exception e) {
	e.printStackTrace();
} 
out.flush();
out.close();
[code=java]
/**
	 * 下载文件
	 * @param config
	 * @param response
	 * @param downLoadFileName
	 */
	public static void downLoad(HttpServletResponse response,String filePath){
		BufferedInputStream bis=null;
		BufferedOutputStream  bos=null;
		try{
			 String filename=filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());
			 response.setContentType("application/x-msdownload");
			 response.setHeader("Content-Disposition","filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
			 bis =new BufferedInputStream(new FileInputStream(filePath));
			 bos=new BufferedOutputStream(response.getOutputStream()); 
			 byte[] buff = new byte[2048];
			 int bytesread;
			 while(-1 != (bytesread = bis.read(buff, 0, buff.length))) {
			  bos.write(buff,0,bytesread);
			 }
		}catch(Exception e){
		     e.printStackTrace();
		}finally {
		 if (bis != null)
			try {
				bis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		 if (bos != null)
			try {
				bos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
      
	}
[/code]
General-M 2013-01-29
  • 打赏
  • 举报
回复
weboffice,,,,,
Enock2 2013-01-29
  • 打赏
  • 举报
回复
response.addHeader("Content-Disposition","inline;filename="+filename+".doc");%>
BoJerry 2013-01-29
  • 打赏
  • 举报
回复
据我了解目前有如下3种方法用于实现: 1-apache的POI,此方法对Excel的导出做的很好,目前对Word的导出方面的功能尚未完全。 2-纯JavaScript脚本实现。主要通过客户端调用本机Office组件来实现。 3-在JSP页面引入头文件实现。 纯JavaScript脚本实现细节方面大体是创建一个word组件ActiveXObject('Word.Application'),用js通过表ID取得表内容然后保存到word,要注意的是js实现有很多不好的地方,例如Internet选项需要把ActiveX空间全部启用,安全级别设置为中。这样的话岂不是每台机器都要配置一下。其次每次生成word文档以后弹出对话框(无法保存此文件,因为它已在别处打开(C:\...\STARTUP\Powerword.dot)),出现此问题就需要把C:\Documents and Settings\当前用户名\Application Data\Microsoft\Word\STARTUP下的Powerword.dot文件删除,每次遇到此问题就需要删除文件来解决,十分不方便。 JSP页面引入来实现Word保存就方便多了,但是也有不足的地方,首先如果需要引入 <meta http-equiv="Content-Type" content="application/msword; charset=gb2312" /> 如果需要下载的话就引入 <%@ page contentType="application/msword; charset=gb2312" %> 其实如果大家用框架做就方便多了,比如Struts2。在Action里直接写如下代码: if(out!=null){ String fileName=""; fileName+="评价报告.doc"; try { HttpServletResponse response = ServletActionContext.getResponse(); response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("GB2312"), "8859_1")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } out是jsp页面表单元素,一个button,用于提交表单到相应Action进行Word下载。Action设置jsp页面头文件。这样每次点击button就可以把相应jsp页面的内容保存到Word中并且支持下载,Word中内容并且是可编辑状态。 不足的地方在于由于表内容是动态生成,有的需要先查看在下载Word,就需要另外建立一个新JSP页面进行Word下载,当然首先要在struts.xml里配置好页面转向。
Enock2 2013-01-29
  • 打赏
  • 举报
回复
将JSp头部改为
<%@ page contentType="application/vnd.ms-word; charset=UTF-8"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%String filename= new String(("xxxx").getBytes("GBK"),"ISO-8859-1");
response.addHeader("Content-Disposition","inline;filename="+filename+".xls");%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
即可
xgapp 2013-01-29
  • 打赏
  • 举报
回复
有很多种方式。 比如微软有一款软件。基本邮箱都在用。但是是否是收费的就不知道了。 还有就是flashpaper 如果服务器是linux的就没法用了 还有就是flexpaper+swftools+openoffice的讨论。这个免费支持多系统

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧