导出比较大excel出现"与服务器的连接被重置问题"

下载一定要设昵称 2012-03-26 03:40:42
导出按钮方法,ISS已经把连接超时设大了,executionTimeout也设大了 但没效果.请问该怎么解决
excel大概会有100M 下载速度也不理想 50k左右 所以很慢

page.Response.Clear();
page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");//采用中文简体的编码方式,确保不出现乱码
page.Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(Filename + DateTime.Now.ToShortDateString(), System.Text.Encoding.UTF8) + ".xls\"");
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridview.AllowPaging = false;
BindData();

gridview.RenderControl(htw);

page.Response.Write(sw.ToString());
page.Response.End();

gridview.AllowPaging = true;
BindData();
...全文
304 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
laokaizzz 2012-03-26
  • 打赏
  • 举报
回复
提高下载速度~
haa17 2012-03-26
  • 打赏
  • 举报
回复
调用

CreateExcel(DataTable,"21.xlsx"dataPage.Response);
haa17 2012-03-26
  • 打赏
  • 举报
回复

/// <summary>
/// 导出Execl(带表头)
/// </summary>
/// <param name="dt"></param>
/// <param name="FileName"></param>
/// <param name="response"></param>
public void CreateExcel(DataTable dt, string FileName, HttpResponse response)
{
HttpResponse resp;
resp = response;
FileName = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(FileName));
resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".xls");
string colHeaders = "", ls_item = "";
//定义表对象与行对象,同时用DataSet对其值进行初始化
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count;
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
colHeaders += dt.Columns[i].Caption.ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\n";
}
else
{
colHeaders += dt.Columns[i].Caption.ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\t";
}
}
resp.Write(colHeaders.Replace("\r", " "));
//向HTTP输出流中写入取得的数据信息
//逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
ls_item += row[i].ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\n";
}
else
{
ls_item += row[i].ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\t";
}
}
resp.Write(ls_item.Replace("\r", " "));
ls_item = "";
}
resp.End();
}


试试这个,之前用的,没出现什么问题。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧