java打开文件问题 java怎么打开word xls pdf html 在客户端打开服务端的这些文件? 代码最简单最好? 最好有相应的例子? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <a href=".../test1.doc">open the word</a> <a href=".../test2.xls">open the excel</a> 并且在web.xml里面加上下面两句: <mime-mapping> <extension>doc</extension> <mime-type>application/vnd.ms-word</mime-type> </mime-mapping> <mime-mapping> <extension>xls</extension> <mime-type>application/vnd.ms-excel</mime-type> </mime-mapping> public static boolean downLoad(String path,String name,String filename,HttpServletResponse response) { File tfile=new File(path+"/" + name +"/"+ filename); String contentType = ""; if(filename.toLowerCase().indexOf(".xls")>0) { contentType="application/vnd.ms-excel;" + "charset=UTF-8;attachment; filename=" + filename; } else { contentType="application/vnd.ms-zip;" + "charset=UTF-8;attachment; filename=" + filename; } byte[] buffer = new byte[8192]; //Create the download files int bytesRead = 0; if(tfile != null) { response.setContentType(contentType); response.setHeader( "content-disposition", "attachment; filename=\"" + filename + "\""); try { FileInputStream is = new FileInputStream(tfile); BufferedOutputStream oStream = new BufferedOutputStream(response.getOutputStream()); //Get file stream while((bytesRead=is.read(buffer,0,8192))!=-1) { oStream.write(buffer,0,bytesRead); } oStream.flush(); if (oStream != null) { oStream.close(); } response.flushBuffer(); } catch(IOException ioe) { System.out.println("ssss==>" + ioe.toString()); return false; // errors.add("nofile",new ActionMessage("file.not.exsit.error")); // this.saveErrors(request,errors); // return (new ActionForward(mapping.getInput())); } catch(Exception e) { return false; // errors.add("nofile",new ActionMessage("file.not.exsit.error")); // this.saveErrors(request,errors); // return (new ActionForward(mapping.getInput())); } } return true; } 这个是本人查的资料,你可以试试: 对word文档的处理(上传与下载) <%@ page contentType="application/msword" %> <!-- 以上这行设定本网页为excel格式的网页 --> <% response.setHeader("Content-disposition","inline; filename=test1.doc"); //线上浏览方式 // response.setHeader("Content-disposition","attachment; filename=test1.doc");//下载方式 //以上这行设定传送到前端浏览器时的档名为test1.doc //就是靠这一行,让前端浏览器以为接收到一个word档 %> //然后输出动态内容就可以得到一个word文档了 1,打开: 1)文件头上加:<%@ page contentType="application/msword"%> xml文件里: <mime-mapping> <extension>doc</extension> <mime-type>application/msword</mime-type> </mime-mapping> 2)可以用js,以下代码来自引用: <%@ page contentType="text/html;charset=gb2312" import= "java.io.*"%> <HTML> <script> var wrd=new ActiveXObject("Word.Application") wrd.visible=true alert ("您的"+wrd.Application.Caption+"安装路径为:\n"+wrd.Application.Path+"\n版本号是:"+ wrd.Application.version+"\n注册使用者是:"+wrd.Application.UserName) wrd.Documents.Add() //wrd.Documents.Open("c:\\exam.doc") wrd.Selection.TypeText("This is some text.") wrd.Application.Activate() wrd.ActiveDocument.SaveAs("c:\\exam111.doc") wrd=null </script> </HTML> http://bbs.haopdf.cn/archiver/tid-2281.html这个帖子lz也可以看看 我用irporte自动生成的word文件 我用html打开 但是出现上面问题 这个文件没有包含进来effectStat.html_files/px 怎么才能做到这个也包含进来 还有分页怎么实现??? alert ("您的"+wrd.Application.Caption+"安装路径为:\n"+wrd.Application.Path+"\n版本号是:"+ wrd.Application.version+"\n注册使用者是:"+wrd.Application.UserName) --------------------------------------------- 三楼 我是在客户端访问 不可能知道客户端用的word版本还是wps http://blog.csdn.net/CloneIQ/archive/2007/01/09/1477741.aspx 看到这个有分页 但是要在页面中加代码? 总不会让我吧页面下载下来改了后在打开把? 我知道但是客户不知道啊·~ 请高手讲下? 已解决 用配置文件http://hi.baidu.com/wkcs520/blog/item/01dac0fc0764ea81b801a017.html 看到这上面的 谢谢大家 12月4日Java启动相应的windows程序来打开文件(pdf,txt,web page....)我们都知道,在Windows中浏览器可以用来打开很多不同的文件,比如:网页,txt和pdf等等(前提是你的系统注册了pdf软件)。 IE是通过什么方式来实现不同文件用不同软件来打开呢? 查了一下资料,关键是一个叫url.dll 的动态链接库,url.dll提供了IE调用 各种应用来显示不同的文件的实现。既然IE提供了这样一个功能,我们就可以在java程序中利用它。一个问题又出现了,我们如何在java程序中调用动态链接库? 继续查了一下资料,windows系统提供了一个叫Rundll32.exe的文件,顾名思义,它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。rundll32.exe的具体使用方法如下:Rundll32.exe DLLname,Functionname [Arguments] DLLname为需要执行的DLL文件名;Functionname为前边需要执行的DLL文件的具体引出函数;[Arguments]为引出函数的具体参数。 结合url.dll和rundll32.exe,我们就可以通过在命令行中启动相应程序打开相应文档: 假设我有一个pdf文档,存放在c:\test.pdf 。打开命令行, 运行如下 命令:rundll32 url.dll FileProtocolHandler file://c:\test.pdf 好了,我们知道如何运行命令来打开相应文档。那么,要在java代码中调用,也就很简单了,snippet如下:String cmd="rundll32 url.dll FileProtocolHandler file://c:\test.pdf ";Process p = Runtime.getRuntime().exec(cmd); 现在,我们就实现了通过统一的方式打开文档的方法。(只要IE能打开的文档,这个java程序就能打开)。Enjoy! 任何问题,给我写评论。一个高手所写,本人测试 通过。路径你可以自己写方法获取。总之转成 String类型 和 命令放在一起执行就OK。通常的文件都可以打开。txt doc xlz bmp 等等。特殊除外。特殊你可以执行命令 "start "+路径;这种方法打开的是 打开方式 对话框。吃水不忘挖井人。原帖地址如下:http://kendung.spaces.live.com/blog/cns!DC568057EC489A75!476.entry?ccr=4739#comment 有关JAVA的问题 严重: Servlet.service() for servlet jsp threw exception jsp页面异常 猜数字运行问题,请达人帮帮忙 一个奇怪问题 Struts2与Spring的整合出问题 JsonStore读取外部文件的问题 如何限制网页重复提交? 百度地图,多点路线规划 基于spring security 做token验证允许别人用授权的token请求 JSp报错 org.apache.jasper.JasperException: An exception occurred processing getBean找不到bean,如何解决!!!!
<a href=".../test2.xls">open the excel</a>
并且在web.xml里面加上下面两句:
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
public static boolean downLoad(String path,String name,String filename,HttpServletResponse response)
{
File tfile=new File(path+"/" + name +"/"+ filename);
String contentType = "";
if(filename.toLowerCase().indexOf(".xls")>0)
{
contentType="application/vnd.ms-excel;" +
"charset=UTF-8;attachment; filename=" + filename;
}
else
{
contentType="application/vnd.ms-zip;" +
"charset=UTF-8;attachment; filename=" + filename;
}
byte[] buffer = new byte[8192];
//Create the download files
int bytesRead = 0;
if(tfile != null)
{
response.setContentType(contentType);
response.setHeader(
"content-disposition",
"attachment; filename=\"" + filename + "\"");
try
{
FileInputStream is = new FileInputStream(tfile);
BufferedOutputStream oStream =
new BufferedOutputStream(response.getOutputStream());
//Get file stream
while((bytesRead=is.read(buffer,0,8192))!=-1)
{
oStream.write(buffer,0,bytesRead);
}
oStream.flush();
if (oStream != null) {
oStream.close();
}
response.flushBuffer();
}
catch(IOException ioe)
{
System.out.println("ssss==>" + ioe.toString());
return false;
// errors.add("nofile",new ActionMessage("file.not.exsit.error"));
// this.saveErrors(request,errors);
// return (new ActionForward(mapping.getInput()));
}
catch(Exception e)
{
return false;
// errors.add("nofile",new ActionMessage("file.not.exsit.error"));
// this.saveErrors(request,errors);
// return (new ActionForward(mapping.getInput()));
}
}
return true;
}
对word文档的处理(上传与下载)
<%@ page contentType="application/msword" %>
<!-- 以上这行设定本网页为excel格式的网页 -->
<%
response.setHeader("Content-disposition","inline; filename=test1.doc"); //线上浏览方式
// response.setHeader("Content-disposition","attachment; filename=test1.doc");//下载方式
//以上这行设定传送到前端浏览器时的档名为test1.doc
//就是靠这一行,让前端浏览器以为接收到一个word档
%>
//然后输出动态内容就可以得到一个word文档了
1,打开:
1)文件头上加:<%@ page contentType="application/msword"%>
xml文件里:
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
2)可以用js,以下代码来自引用:
<%@ page contentType="text/html;charset=gb2312" import= "java.io.*"%>
<HTML>
<script>
var wrd=new ActiveXObject("Word.Application")
wrd.visible=true
alert ("您的"+wrd.Application.Caption+"安装路径为:\n"+wrd.Application.Path+"\n版本号是:"+ wrd.Application.version+"\n注册使用者是:"+wrd.Application.UserName)
wrd.Documents.Add()
//wrd.Documents.Open("c:\\exam.doc")
wrd.Selection.TypeText("This is some text.")
wrd.Application.Activate()
wrd.ActiveDocument.SaveAs("c:\\exam111.doc")
wrd=null
</script>
</HTML>
但是出现上面问题
这个文件没有包含进来effectStat.html_files/px
怎么才能做到这个也包含进来
还有分页怎么实现???
---------------------------------------------
三楼 我是在客户端访问 不可能知道客户端用的word版本还是wps
看到这个有分页 但是要在页面中加代码?
总不会让我吧页面下载下来改了后在打开把? 我知道但是客户不知道啊·~
请高手讲下?
用配置文件
http://hi.baidu.com/wkcs520/blog/item/01dac0fc0764ea81b801a017.html
看到这上面的 谢谢大家
Java启动相应的windows程序来打开文件(pdf,txt,web page....)
我们都知道,在Windows中浏览器可以用来打开很多不同的文件,比如:网页,txt和pdf等等(前提是你的系统注册了pdf软件)。 IE是通过什么方式来实现不同文件用不同软件来打开呢? 查了一下资料,关键是一个叫url.dll 的动态链接库,url.dll提供了IE调用 各种应用来显示不同的文件的实现。既然IE提供了这样一个功能,我们就可以在java程序中利用它。一个问题又出现了,我们如何在java程序中调用动态链接库? 继续查了一下资料,windows系统提供了一个叫Rundll32.exe的文件,顾名思义,它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。rundll32.exe的具体使用方法如下:
Rundll32.exe DLLname,Functionname [Arguments]
DLLname为需要执行的DLL文件名;Functionname为前边需要执行的DLL文件的具体引出函数;[Arguments]为引出函数的具体参数。
结合url.dll和rundll32.exe,我们就可以通过在命令行中启动相应程序打开相应文档: 假设我有一个pdf文档,存放在c:\test.pdf 。打开命令行, 运行如下 命令:
rundll32 url.dll FileProtocolHandler file://c:\test.pdf
好了,我们知道如何运行命令来打开相应文档。那么,要在java代码中调用,也就很简单了,snippet如下:
String cmd="rundll32 url.dll FileProtocolHandler file://c:\test.pdf ";
Process p = Runtime.getRuntime().exec(cmd);
现在,我们就实现了通过统一的方式打开文档的方法。(只要IE能打开的文档,这个java程序就能打开)。Enjoy!
任何问题,给我写评论。一个高手所写,本人测试 通过。路径你可以自己写方法获取。总之转成 String类型 和 命令放在一起执行就OK。通常的文件都可以打开。txt doc xlz bmp 等等。特殊除外。
特殊你可以执行命令 "start "+路径;这种方法打开的是 打开方式 对话框。
吃水不忘挖井人。原帖地址如下:
http://kendung.spaces.live.com/blog/cns!DC568057EC489A75!476.entry?ccr=4739#comment