asp.net 导出,文件下载

--- asp.net  MVC 导出excel   https://www.cnblogs.com/zhangchunyu/articles/5805008.html
---------- asp.net web导出,不用保存临时文件

NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
//添加一个sheet
NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("第一个sheet");
//给sheet1添加第一行的头部标题
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
row1.CreateCell(0).SetCellValue("I2D");
row1.CreateCell(1).SetCellValue("用户姓名");
row1.CreateCell(2).SetCellValue("电话");
row1.CreateCell(3).SetCellValue("注册时间");
row1.CreateCell(4).SetCellValue("邀请人ID");
row1.CreateCell(5).SetCellValue("邀请人名称");
row1.CreateCell(6).SetCellValue("邀请人电话");
row1.CreateCell(7).SetCellValue("总积分");
row1.CreateCell(8).SetCellValue("已使用积分");
row1.CreateCell(9).SetCellValue("可用积分");
//将数据逐步写入sheet1各个行
for (int i = 0; i < 11; i++)
{
}

//System.Web.HttpContext.Current.Response.ContentType = 
"application/vnd.ms-excel";
通知浏览器下载文件而不是打开
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + 
HttpUtility.UrlEncode("测试期初数据.xls", System.Text.Encoding.UTF8));
using (MemoryStream ms = new MemoryStream())
{
//将工作簿的内容放到内存流中 
book.Write(ms);
//将内存流转换成字节数组发送到客户端 
System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());
System.Web.HttpContext.Current.Response.End();
book = null;
}

 

  ---文件下载

  string fileName = dt.Rows[0][0].ToString() + "期初数据.xlsx";//客户端保存的文件名
        string filePath = context.Server.MapPath("/Upload/uploadBeginData/" + OUID + ".xlsx");//路径
        if (!string.IsNullOrEmpty(filePath) && System.IO.File.Exists(filePath))
        {
            //以字符流的形式下载文件
            System.IO.FileInfo file = new System.IO.FileInfo(filePath);
            context.Response.Clear();
            context.Response.Charset = "UTF-8";
            context.Response.ContentEncoding = System.Text.Encoding.UTF8;
            context.Response.AddHeader("Content-Type", "application/octet-stream");
            // 添加头信息,为"文件下载/另存为"对话框指定默认文件名,设定编码为UTF8,防止中文文件名出现乱码
            context.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            // 添加头信息,指定文件大小,让浏览器能够显示下载进度
            context.Response.AddHeader("Content-Length", file.Length.ToString());
             指定返回的是一个不能被客户端读取的流,必须被下载
            context.Response.ContentType = "application/ms-excel";
            // 把文件流发送到客户端
            context.Response.WriteFile(file.FullName);
            // 停止页面的执行
            context.Response.End();
        }

  

转载于:https://www.cnblogs.com/dare/p/10913122.html

ASP.NET中,导出文件流通常指的是将文件内容通过网络传输给客户端,使用户能够下载文件。这一过程涉及到几个关键的步骤: 1. 创建文件流:首先需要创建一个指向具体文件的流对象,这可以通过`System.IO`命名空间下的`FileStream`类来实现。 2. 设置响应头:为了确保浏览器能够识别响应并触发下载,需要设置响应头(Response Headers)。这通常包括`Content-Type`(指定MIME类型),`Content-Disposition`(指定文件应当作为附件下载),以及`Content-Length`(指定文件的大小)。 3. 传输文件流:将文件流的内容写入到HTTP响应流中,这样客户端就可以接收到文件内容,并根据`Content-Disposition`的设置进行下载。 下面是一个简单的示例代码,展示如何在ASP.NET中实现导出文件流的功能: ```csharp protected void ExportFile(string filePath, string fileName) { // 检查文件是否存在 if (!File.Exists(filePath)) { // 文件不存在时的处理逻辑 throw new FileNotFoundException("文件未找到", filePath); } // 设置响应头 Response.ContentType = "application/octet-stream"; // 通用二进制流类型,表示下载文件 Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName); // 创建文件流 using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { // 设置文件大小 long fileLength = new FileInfo(filePath).Length; Response.AddHeader("Content-Length", fileLength.ToString()); // 读取文件流并写入到响应流中 byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0) { Response.OutputStream.Write(buffer, 0, bytesRead); } } // 结束响应 Response.End(); } ``` 在上面的代码中,`filePath`是服务器上的文件路径,`fileName`是客户端下载文件时看到的文件名。这段代码首先检查文件是否存在,然后设置必要的响应头,接着创建文件流并读取文件内容,最后将其写入到HTTP响应流中,触发浏览器下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值