(C#.net)web页面导出excel方法&防止乱码

1):添加Excel.dll到引用文件中,并在页面后台引用这个命名空间:Using Excel;

2)按钮事件代码:

 string filename = "filename"+ ".xls"; //导出Excel的名字
        try
        {
            Excel.Application excel = new Excel.Application();//申明一个对象;
            _Workbook book;
            _Worksheet sheet;
            book = excel.Workbooks.Add(true);
            sheet = (Worksheet)book.ActiveSheet;

            excel.Cells[1, 1] = "try again";//在单元格中赋值,row&column都是从1开始
            excel.Cells[1, 2] = "this is my another report";

            excel.Visible = false;
            book.SaveCopyAs(Server.MapPath("file")+"\\"+filename);//保存excel在名为file的文件夹下,这个文件夹必须先存在;
            //excel.Quit();//如果不注释掉,会弹出提示框询问你是否保存sheet1;
        }
        catch (Exception ex)
        {
            Response.Write("script language=javascript>alert('Encounter one error!');history.go(-1)</script>"); //Exception handling
        }
        //将保存在file文件夹下的excel,以文件流的方式导出
        string path = Server.MapPath("file") + "\\" + filename;
        System.IO.FileInfo file = new System.IO.FileInfo(path);

        Response.Clear();     //[将文件从“服务端”导出到“客户端”]
        Response.Charset = "GB2313";  //[设置写入流的字符编码方式为GB2312]
        Response.ContentEncoding = System.Text.Encoding.UTF8; //[设置写入流的文字编码格式:UTF8]
        //Response.AddHeader("Content-Disposition", "attachment:filename=" + Server.UrlEncode(file.Name));
        Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(file.Name));//注意attachment后面是分号不是冒号,不然打开后的excel为.aspx页面的HTML代码;// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
        Response.AddHeader("Content-Length", file.Length.ToString());// 添加头信息,指定文件大小,让浏览器能够显示下载进度
        Response.ContentType = "application/ms-excel";//指定内容类型,导出格式为excel,也可以是ms-word,etc;// 指定返回的是一个不能被客户端读取的流,必须被下载
        Response.WriteFile(file.FullName);// 把文件流发送到客户端
        Response.End(); // 停止页面的执行
        File.Delete(this.FileName);//[关闭文件流] 

}

转载于:https://my.oschina.net/u/1410501/blog/179631

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值