【发布时间】:2014-02-03 17:30:37
【问题描述】:
我正在使用这个函数从我的 SQL Server 查询中创建一个 Excel 文件
DataTable dt = new DataTable();
SqlConnection objcon = new SqlConnection(connectionString);
string sql = "My SELECT SQL";
SqlDataAdapter objda = new SqlDataAdapter(sql, objcon);
objda.Fill(dt);
GridView gvreport = new GridView();
gvreport.DataSource = dt;
gvreport.DataBind();
string fileName = string.Format("fileNameHere");
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Response.ContentType = "application/excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvreport.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
return null;
直到我现在意识到它在尝试写入超过 11,000 行时效果不佳。
Excel 文件本身很好,但是在大约 11,000 行之后它突然中断,之后所有行都是空白的。行本身仍然是“创建”的,带有边框和所有内容,但它们都是空白的。
知道是什么原因造成的吗?或者有没有更好的方法来创建这样的 Excel 文件?
【问题讨论】:
-
您使用的是什么版本的 Excel?
-
@davisoa 创建还是阅读?我正在使用 openoffice 阅读,而我不确定代码用于创建什么。
-
谷歌搜索“Apache POI”会导致不同的方式。您可以决定是否更好。
-
我首先要看的是某处是否超时,或者是否达到了请求/响应大小的某种大小限制。
-
@davisoa 实际上。我刚刚尝试使用 MS Office 2010 打开它可以很好地阅读所有帖子,问题在于 openoffice。好吧,这以一种奇怪的方式得到了解决。
标签: c# sql .net sql-server excel