在进行Web开发时,可能遇到遇到以下几种需求:
l 希望某类或者某已知MIME 类型的文件(比如:.gif;.txt;*.htm)能够在访问时弹出“文件下载”对话框。
l 希望客户端下载时以指定文件名显示。
l 希望某文件直接在浏览器上显示而不是弹出文件下载对话框。
对于上面的需求,使用Content-Disposition属性就可以解决。下面是代码示例:
Response.AddHeader(“Content-disposition”, “attachment;filename=” + fileName)。
//Content-disposition为属性名。
//attachment表示以附件方式下载。如果要在页面中打开,则改为inline。
//filename如果为中文,则会出现乱码。解决办法有两种:
//1、使用fileName = new String(fileName.getBytes(), “ISO8859-1”)语句
//2、使用fileName = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8)语句
Response.Write是输出字节流,用于输出文字信息,Write,直接在屏幕上输出
而WriteFile尽管也是输出字节流,但是这个字节流是在服务器内部直接输出的,在客户端是不可见的,用于输出文件流,就是下载文件到客户端,客户端通过一定的模式去获取这个流,就得到了一个文件
不同浏览器有所差异,IE如下
谷歌如下
理解HSSFWorkbook的几种对象:
HSSFWorkbook:excel的工作簿
HSSFSheet:excel的工作表
HSSFRow:excel的行
HSSFCell:excel的单元格
HSSFFont:excel字体
HSSFDataFormat:日期格式
HSSFHeader:sheet头
样式:
HSSFCellStyle:单元格样式
一个Excel的文件对应一个工作簿(HSSFWorkbook),一个工作簿可以有多个工作表(我们通常看到的Sheet0、Sheet1)(HSSFSheet)组成,一个工作表是由多行(HSSFRow)组成,一行又是由多个单元格(HSSFCell)组成。
context.Response.ContentType = “application/excel”;
string fileName = HttpUtility.UrlEncode(“动态数据.xls”);
context.Response.AddHeader(“content-disposition”, “attachment;filename=”+fileName);
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(“sheetT”);
int columns = 0;
//填充表头
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);
dataRow.CreateCell(columns).SetCellValue("xxx");
sheet.SetColumnWidth((short)columns, (short)4000);
columns++;
dataRow = (HSSFRow)sheet.CreateRow(1);
//ID
dataRow.CreateCell(0).SetCellValue("ID");
//
dataRow.CreateCell(1).SetCellValue("客户名称 ");
dataRow.CreateCell(2).SetCellValue("xxxxxxxx");
workbook.Write(context.Response.OutputStream);
workbook = null;