黑马程序员技术交流社区

标题: 动态excel数据下载问题 [打印本页]

作者: 吴淑金    时间: 2012-5-19 18:42
标题: 动态excel数据下载问题
本帖最后由 吴淑金 于 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打开是正常的。。
求解决方案~~!!
作者: 翠鸟    时间: 2012-5-19 19:17
context.Response.AddHeader("Content-Disposition", "attachment:filename=" + fileName);
我在这篇博客里:http://archive.cnblogs.com/a/2088497/
看到:context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
此处第二个参数里attachment后面是分号,你试试是不是这里的问题
作者: 朱亮辉    时间: 2012-5-21 11:33
context.Response.AddHeader("Content-Disposition", "attachment:filename=" + fileName);你只是输出了你想输出的文件,但是浏览器需要知道你输出的文件的类型,所以得加上输出文件类型的语句,

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


作者: 许庭洲    时间: 2012-5-21 13:08
             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);
作者: 魏庆君    时间: 2012-5-21 22:56
在不是宏定义的情况下,所有的数据都需要指定一个数据类型,用来指定存储数据所需空间大小,在这里也是这样的,需要指定变量的类型




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2