日期:2014-05-20  浏览次数:20824 次

顶者有分~~!!!导出数据到Excel总是出错。数据量超过三万条,一次性导出到Excel.使用C#语言写
显示在页面上的信息:您试图在此   Web   服务器上访问的   Web   应用程序当前不可用。请点击   Web   浏览器中的“刷新”按钮重试您的请求。
代码:db.RunProc( "sp_downDataList ",prams,out   dr);

grdexcel.DataSource   =   dr;
grdexcel.DataBind();
Button1.Enabled=false;
Response.Clear();  
Response.Buffer=   true;  
Response.Charset= "gb2312 ";  
                     
Response.AppendHeader( "Content-Disposition ", "attachment;filename=sheet "+DateTime.Now.ToString( "yyyyMMddss ")+ ".xls ");
Response.ContentEncoding   =   System.Text.Encoding.UTF8;
//Response.ContentEncoding=System.Text.Encoding.GetEncoding( "gb2312 ");  
Response.ContentType   =   "application/ms-excel ";  
this.EnableViewState   =   false;

System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter();  
System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   new   System.Web.UI.HtmlTextWriter(oStringWriter);
grdexcel.RenderControl(oHtmlTextWriter);  
Response.Write(oStringWriter.ToString());  



------解决方案--------------------
不熟悉,UP一下

------解决方案--------------------
不大赞同你的思路,我之前一般采用在服务器端生成.csv文件方式导出数据。

.csv是Excel可以直接读取的文件格式。多个字段以逗号分隔。写完之后使用Redirect语句即可。

使用StringBuilder可以提高性能。
------解决方案--------------------
孟老大的:
http://dotnet.aspx.cc/article/8a4cbf47-b888-4832-3389-ed3a3a3c8aab/read.aspx
------解决方案--------------------
up了,最近要做sharepoint,估计和excel少不了关系。mark
------解决方案--------------------
读取到dataset`` 应该和 reader 差不多`
private DataSet InstrumentExcelToDataSet(string Path)
{
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source= " + Path + "; " + "Extended Properties= 'Excel 8.0;IMEX=1 ' ";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbDataAdapter myCommand = null;
DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();
string strExcel = "SELECT 电话号码 FROM [ " + tableName + "] ";
myCommand = new OleDbDataAdapter(strExcel, strConn);
dsExcel = new DataSet();
myCommand.Fill(dsExcel, "table1 ");
conn.Close();
}
catch (OleDbException ole)
{
throw ole;
}
catch (SystemException se)
{

}
return dsExcel;
}
------解决方案--------------------
3W条数据的excel?晕我的机子肯定打不开...
------解决方案--------------------
我晕,用多线程处理啊

------解决方案--------------------
3W条数据小意思..不回打不开的..楼上2层的兄弟太小巧microsoft了

楼主的思路不对,应该使用OWC编程的..

我处理过类似的问题.数据量有10几万...
------解决方案--------------------
帮顶一下!
------解决方案--------------------