A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴淑金 中级黑马   /  2012-5-19 18:42  /  2672 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴淑金 于 2012-5-19 19:09 编辑

      ashx页面的源码如下:      
           context.Response.ContentType = "application/x-excel";
             string fileName = HttpUtility.UrlEncode("动态数据.xls");
             context.Response.AddHeader("Content-Disposition", "attachment:filename=" + fileName);
             HSSFWorkbook hkb = new HSSFWorkbook();
             HSSFSheet hs = hkb.CreateSheet();
             HSSFRow row = hs.CreateRow(0);
             HSSFCell cell1 = row.CreateCell(0, HSSFCell.CELL_TYPE_STRING);
             cell1.SetCellValue("hello");
             row.CreateCell(1, HSSFCell.CELL_TYPE_NUMERIC).SetCellValue(3.14);
             hkb.Write(context.Response.OutputStream);

点击页面下载下来的是HandlerExcel.ashx 文件,而非excel文件,这是为什么?但是该文件拿excel打开是正常的。。
求解决方案~~!!

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

4 个回复

倒序浏览
context.Response.AddHeader("Content-Disposition", "attachment:filename=" + fileName);
我在这篇博客里:http://archive.cnblogs.com/a/2088497/
看到:context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
此处第二个参数里attachment后面是分号,你试试是不是这里的问题

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
context.Response.AddHeader("Content-Disposition", "attachment:filename=" + fileName);你只是输出了你想输出的文件,但是浏览器需要知道你输出的文件的类型,所以得加上输出文件类型的语句,

加上这句话就可以了,
context.Response.AddHeader("Content-Type", "application/ms-excel ");

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
             context.Response.ContentType = "application/x-excel";
             string fileName = HttpUtility.UrlEncode("动态数据.xls");
             context.Response.AddHeader("Content-Disposition", "attachment:filename=" + fileName);

             //增加输出文件的类型
             context.Response.AddHeader("Content-Type", "application/ms-excel ");

             HSSFWorkbook hkb = new HSSFWorkbook();
             HSSFSheet hs = hkb.CreateSheet();
             HSSFRow row = hs.CreateRow(0);
             HSSFCell cell1 = row.CreateCell(0, HSSFCell.CELL_TYPE_STRING);
             cell1.SetCellValue("hello");
             row.CreateCell(1, HSSFCell.CELL_TYPE_NUMERIC).SetCellValue(3.14);
             hkb.Write(context.Response.OutputStream);
回复 使用道具 举报
在不是宏定义的情况下,所有的数据都需要指定一个数据类型,用来指定存储数据所需空间大小,在这里也是这样的,需要指定变量的类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马