我在Windows 2003Server上装了office2003
想打开服务器网站的excel文件:
fi.OpenExistsExcelFile("~/report/test.xls");
但发现客户端只一闪而过,服务器上却打开了此文件,这不是我想要的,我要的是在客户端打开此文件而不是在服务器上,请问如何做啊??注:我在服务器上设置了DCOM为交互用户,本地启动,本地激活,权限也设了。
想打开服务器网站的excel文件:
fi.OpenExistsExcelFile("~/report/test.xls");
但发现客户端只一闪而过,服务器上却打开了此文件,这不是我想要的,我要的是在客户端打开此文件而不是在服务器上,请问如何做啊??注:我在服务器上设置了DCOM为交互用户,本地启动,本地激活,权限也设了。
解决方案 »
- asp.net网页兼容IE8
- DefaultParameterValue的问题
- ASP.NET程序经常报 System.Web.UI.DataBinder.GetPropertyValue异常
- 在vs 2005中怎樣使用CryStal Report
- 用过webdiyer版主分页控件的同志进来看看,版主亲自看更好:)
- 哪位老大有动网新闻3.0(asp.net版)的源代码啊
- HttpWebRequest 重定向问题
- 同一域名下的cookie 当使用ajax方式请求时获取不到cookie吗
- 数据库里的一字段为空null怎么表示?
- 10个日期变量,什么方法最容易获得最大日期和最小日期?成功后立即给分!
- 求高人,关于游戏接口问题
- 看到此贴的都进来帮忙解决个问题!关于判断的~谢谢了!
输出Excel文件内容到客户端
或string fileName = "";//客户端保存的文件名
string filePath = Server.MapPath("");//路径 FileInfo fileInfo = new FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
{
try
{
FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
BinaryReader br = new BinaryReader(myFile);
try
{
_Response.AddHeader("Accept-Ranges", "bytes");
_Response.Buffer = false;
long fileLength = myFile.Length;
long startBytes = 0;
double pack = 10240; //10K bytes
//int sleep = 200; //每秒5次 即5*10K bytes每秒
int sleep = (int)Math.Floor(1000 * pack / _speed) + 1;
if (_Request.Headers["Range"] != null)
{
_Response.StatusCode = 206;
string[] range = _Request.Headers["Range"].Split(new char[] {'=', '-'});
startBytes = Convert.ToInt64(range[1]);
}
_Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());
if (startBytes != 0)
{
//Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength-1, fileLength));
}
_Response.AddHeader("Connection", "Keep-Alive");
_Response.ContentType = "application/octet-stream";
_Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(_fileName,System.Text.Encoding.UTF8) );
br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
int maxCount = (int) Math.Floor((fileLength - startBytes) / pack) + 1; for (int i = 0; i < maxCount; i++)
{
if (_Response.IsClientConnected)
{
_Response.BinaryWrite(br.ReadBytes(int.Parse(pack.ToString())));
System.Threading.Thread.Sleep(sleep);
}
else
{
i=maxCount;
}
}
}
catch
{
return false;
}
finally
{
br.Close(); myFile.Close();
}
}
catch
{
return false;
}
return true;
}
调用代码
Page.Response.Clear();
string excelFileName = this.Page.Title + ".xls"; bool success = excel2.ResponseFile(Page.Request, Page.Response, excelFileName, Server.MapPath("./") + @"download\要下载的excel.xls", 1024000);
if (!success)
Response.Write("下载文件出错!");
Page.Response.End();
Response.Redirect("~/report/test.xls")就可以直接打开
把设定好格式并排好版的excel文件test.xls放入网站服务器目录,然后用网页操作此文件,并且还要“写入”数据(如送货记录)到单元格,然后再提供给客户端下载或打开,所以这个“写入”数据很重要,仅仅原样打开是不够的。