关于excel文件的下载 web开发一程序想实现如下功能在某页面中,点Button,弹出对话框,可以直接打开,或者保存服务器某文件夹下的excel文件到本地请给点具体代码参考 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 新建一个页面,如DownFile.aspx在DownFile.aspx页面的PageLoad里写如下代码 protected void Page_Load(object sender, EventArgs e) { string strUrl = HttpUtility.UrlDecode(Request.QueryString["url"], System.Text.Encoding.UTF8).Replace("/","\\"); if (File.Exists(strUrl)) { string strFile = strUrl.Substring(strUrl.LastIndexOf("\\") + 1); FileStream fileStream = new FileStream(strUrl, FileMode.Open); long fileSize = fileStream.Length; Context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(strFile, System.Text.Encoding.UTF8)); Response.Charset = "";// "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.ContentType = "application/octet-stream"; byte[] fileBuffer = new byte[fileSize]; fileStream.Read(fileBuffer, 0, (int)fileSize); fileStream.Close(); Response.BinaryWrite(fileBuffer); Response.Flush(); } else { this.RegisterClientScriptBlock("a", "<script>window.close();</script>"); } }点下载时js代码// 下载已经上传的excel附件 function DownAtt(url) { window.open("DownFile.aspx?url=" +url); } 我用你这个代码下载下来的excel文件,内容多了,本来我只有5条记录,结果变成了 80多条,而且每次的条数还不一样 是你保存在服务器上的excel就有重复,和下载应该没关系,你可以查看一下服务器上的excel文件 string filePath ="";FileInfo Fi = new FileInfo(filePath);if (Fi.Exists){ FileStream fs = new FileStream(filePath, FileMode.Open); byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=1.excel"); Response.BinaryWrite(bytes); Response.Flush(); Response.End();}string path = Server.MapPath("~/") + "";Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(obj.Name, System.Text.Encoding.GetEncoding("utf-8")));Response.ContentType = "application/octet-stream";Response.WriteFile("" + path + "");Response.End();检查数据源 还是关于多线程的问题 同步 请教TextBox控件关于日期型的设置及语法 webservice上自动运行的代码? Crystal Reports的安装求解 问个麻烦的问题 获取 ListView 可视区域内的Item 如何实现 大整数 999999999999 与 0xXX 0xXX 的十六进制数组 之间的互换? 求把图片以二进制形式存到数据库里,并能读出的代码 xml操作-帮个忙吧,各位大虾! 关于用户登录问题 如何解析这样的xml高手站出来帮下 算移动平均值的方法,帮忙优化下
在DownFile.aspx页面的PageLoad里写如下代码 protected void Page_Load(object sender, EventArgs e)
{
string strUrl = HttpUtility.UrlDecode(Request.QueryString["url"], System.Text.Encoding.UTF8).Replace("/","\\");
if (File.Exists(strUrl))
{
string strFile = strUrl.Substring(strUrl.LastIndexOf("\\") + 1); FileStream fileStream = new FileStream(strUrl, FileMode.Open);
long fileSize = fileStream.Length;
Context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(strFile, System.Text.Encoding.UTF8));
Response.Charset = "";// "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/octet-stream";
byte[] fileBuffer = new byte[fileSize];
fileStream.Read(fileBuffer, 0, (int)fileSize);
fileStream.Close();
Response.BinaryWrite(fileBuffer);
Response.Flush();
}
else
{
this.RegisterClientScriptBlock("a", "<script>window.close();</script>");
}
}点下载时js代码
// 下载已经上传的excel附件
function DownAtt(url)
{
window.open("DownFile.aspx?url=" +url);
}
你可以查看一下服务器上的excel文件
FileInfo Fi = new FileInfo(filePath);
if (Fi.Exists)
{
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=1.excel");
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
string path = Server.MapPath("~/") + "";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(obj.Name, System.Text.Encoding.GetEncoding("utf-8")));
Response.ContentType = "application/octet-stream";
Response.WriteFile("" + path + "");
Response.End();检查数据源