首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

为什么在有的电脑上jsp导不出excel?该如何处理

2012-03-19 
为什么在有的电脑上jsp导不出excel?为什么在有的电脑上jsp导不出excel?没有弹出保存窗口%Stringout_xls(

为什么在有的电脑上jsp导不出excel?
为什么在有的电脑上jsp导不出excel?
没有弹出保存窗口
<%
String   out_xls=(String)request.getAttribute( "out_xls ");
int   a=out_xls.lastIndexOf( "\\ ");
String   filename   =out_xls.substring(a+1);
String   filepath   =   out_xls.substring(0,a+1);

//   设置响应头和下载保存的文件名
response.setContentType( "application/vnd.ms-excel ");

response.setHeader( "Content-Disposition ",
"attachment;   filename=\ " "   +   filename   +   "\ " ");

//   打开指定文件的流信息
java.io.FileInputStream   fileInputStream   =
new   java.io.FileInputStream(filepath   +   filename);

//   写出流信息
int   i;
while   ((i=fileInputStream.read())   !=   -1)   {
out.write(i);
}
fileInputStream.close();
out.close();
%>

[解决办法]
可能是客户端没有安装Excel
[解决办法]
可能跟jdk的版本和操作系统有关系

[解决办法]
查看Excel的版本是否相同。我以前也遇见过这样问题,是因为Excel版本不同。
[解决办法]
客户端有安装Excel

[解决办法]
一直用jxl
request.setCharacterEncoding( "GBK ");
boolean bExportSucc = false;
String sErrorStr= " ";
String sHead= " ";
String sFileName= "( "+request.getParameter( "time1 ")+request.getParameter( "time2 ")+ ").xls ";
String sCurrPath=application.getRealPath(sHead);
if(!sCurrPath.substring(sCurrPath.length()-1).equals( "/ "))sCurrPath=sCurrPath+ "/ ";
sCurrPath=sCurrPath+sFileName;

//获取文件的URL地址
String sAttachServer= "127.0.0.1 ";
if(sAttachServer.length()==0)
sAttachServer=request.getServerName()+ ": "+request.getServerPort();
String sUrlPath= "http:// "+sAttachServer+sHead+sFileName;
File file=new File(sCurrPath);

//以下开始输出到EXCEL
try {
/************创建工作簿*************/
WritableWorkbook workbook = Workbook.createWorkbook(file);
/************创建工作表*************/
WritableSheet sheet = workbook.createSheet( "财务出粮表( "+request.getParameter( "time1 ")+request.getParameter( "time2 ")+ ") ", 0);
/************设置页眉、页脚******************/
sheet.setHeader( "页眉 ", " ", "第 &P 页,共 &N 页 "); //设置页眉
sheet.setFooter( " ", " ", "&D &T "); //设置页脚
/******注:以上这些&P、&D等参数可以从EXCEL的宏录制取得********/



/***********设置列宽*****************/
sheet.setColumnView(0,5); //第1列
sheet.setColumnView(1,10); //第2列
sheet.setColumnView(2,10);
sheet.setColumnView(3,10);
/**************设置单元格字体***************/
WritableFont NormalFont = new WritableFont(WritableFont.TIMES,10);
WritableFont BoldFont = new WritableFont(WritableFont.TIMES,14,WritableFont.BOLD);

/**************以下设置几种格式的单元格*************/
//用于标题
WritableCellFormat wcf_title = new WritableCellFormat(BoldFont);
wcf_title.setBorder(Border.NONE, BorderLineStyle.THIN); //线条


wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); //垂直对齐
wcf_title.setAlignment(Alignment.CENTRE); //水平对齐
wcf_title.setWrap(false); //是否换行

//用于正文左
WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); //线条
wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); //垂直对齐
wcf_left.setAlignment(Alignment.CENTRE);
wcf_left.setWrap(false); //是否换行

//用于正文右
WritableCellFormat wcf_right = new WritableCellFormat(NormalFont);
wcf_right.setBorder(Border.ALL, BorderLineStyle.THIN); //线条
wcf_right.setVerticalAlignment(VerticalAlignment.CENTRE); //垂直对齐
wcf_right.setAlignment(Alignment.CENTRE);
wcf_right.setWrap(false); //是否换行

//用于跨行
WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont);
wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); //线条
wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); //垂直对齐
wcf_merge.setAlignment(Alignment.LEFT);
wcf_merge.setWrap(true); //是否换行
/**************单元格格式设置完成*******************/

/*****************以下是标题***************************/
sheet.mergeCells(0, 0, 8, 0); //合并单元格
String ww =request.getParameter( "company1 ");
String ff =request.getParameter( "dep1 ");
String qq=request.getParameter( "duty ");
String iswork=request.getParameter( "iswork ");
sheet.addCell(new Label(0,0,ww+ff+request.getParameter( "zhenshu ")+ "针 "+iswork+qq+ "出粮表 ",wcf_title));
sheet.mergeCells(0, 1, 8, 1); //合并单元格
sheet.addCell(new Label(0,1, "出粮日期: "+request.getParameter( "time2 "),wcf_title));
sheet.mergeCells(0, 1, 8, 1);
sheet.addCell(new Label(4,2, "计时薪资 ",wcf_title));
sheet.mergeCells(4, 2, 9, 2);
sheet.addCell(new Label(11,2, "加班薪资 ",wcf_title));

/*****************以下是定单内容**********************/
sheet.addCell(new Label(0,3, "序号 ",wcf_left));
sheet.addCell(new Label(1,3, "工号 ",wcf_left));
sheet.addCell(new Label(2,3, "姓名 ",wcf_left));
<%@ page import= "com.jspsmart.upload.* " %>
<%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null);
// 下载文件
//su.downloadFile( "./excel/ "+sFileName);
su.downloadFile( "C:/Tomcat 5.5/webapps/caiwu2/ "+sFileName);
%>
<%
if(file.exists()){
file.delete();
}
%>

[解决办法]
有可能和ie的设置有关,你把ie的设置都恢复成默认试试
[解决办法]
应该是IE设置的问题!不能默认,高级里有一项“允许活动内容在我的计算机上的文件中运行”要选上。还有就是有些防火墙什么的软件禁止了!
[解决办法]
用JspSmartUpload组件吧,那个用起来也比较简单

热点排行