显示在页面上的信息:您试图在此 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()); 

解决方案 »

  1.   

    无法导出数据到Excel,请大家帮忙啊~~~
    SqlDataReader dr; SqlParameter [] prams = {
    db.MakeInParam("@gonggongxinxi",SqlDbType.Int,4,gonggongxinxi),
    db.MakeInParam("@dinghuoxinxi",SqlDbType.Int,4,dinghuoxinxi),
    db.MakeInParam("@zhenshikucun",SqlDbType.Int,4,zhenshikucun),
    db.MakeInParam("@zubie",SqlDbType.VarChar,50,zubie),
    db.MakeInParam("@kaishishijian",SqlDbType.DateTime,8,kaishishijian),
    db.MakeInParam("@jieshushijian",SqlDbType.DateTime,8,jieshushijian),
    db.MakeInParam("@staff_ID",SqlDbType.Int,4,UserID),
    db.MakeInParam("@LoginChecked",SqlDbType.Int,4,LoginChecked)
    };
    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()); 
      

  2.   

    不大赞同你的思路,我之前一般采用在服务器端生成.csv文件方式导出数据。.csv是Excel可以直接读取的文件格式。多个字段以逗号分隔。写完之后使用Redirect语句即可。使用StringBuilder可以提高性能。
      

  3.   

    孟老大的:
    http://dotnet.aspx.cc/article/8a4cbf47-b888-4832-3389-ed3a3a3c8aab/read.aspx
      

  4.   

    up了,最近要做sharepoint,估计和excel少不了关系。
      

  5.   

    上面是读取的 这个是 写入的  参考一下``
    private void ExportExcel(DataSet dtsSelect)

    DataSet ds=dtsSelect;//数据源
    if(ds==null) return;  string saveFileName=""; 
    bool fileSaved=false; 
    SaveFileDialog saveDialog=new SaveFileDialog(); 
    saveDialog.DefaultExt ="xls"; 
    saveDialog.Filter="Excel文件|*.xls"; 
    saveDialog.FileName ="Sheet1"; 
    saveDialog.ShowDialog(); 
    saveFileName=saveDialog.FileName; 
    if(saveFileName.IndexOf(":")<0) return; //被点了取消 
    bar1(textBox1.Text); Excel.Application xlApp=new Excel.Application();  if(xlApp==null)

    MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel"); 
    return; 
    }  Excel.Workbooks workbooks=xlApp.Workbooks; 
    Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); 
    Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 
    //写入字段 
    for(int i=0;i<ds.Tables[0].Columns.Count;i++)

    worksheet.Cells[1,i+1]=ds.Tables[0].Columns[i].ColumnName; 

    //写入数值 
       
    for(int r=0;r<ds.Tables[0].Rows.Count;r++)

    for(int i=0;i<ds.Tables[0].Columns.Count;i++)

    worksheet.Cells[r+2,i+1]=ds.Tables[0].Rows[r][i]; 

    System.Windows.Forms.Application.DoEvents(); 

    worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
    // if(cmbxType.Text!="Notification")
    // {
    Excel.Range rg=worksheet.get_Range(worksheet.Cells[2,2],worksheet.Cells[ds.Tables[0].Rows.Count+1,2]);
    rg.NumberFormat="00000000";
    // }
    if(saveFileName!="")

    try

    workbook.Saved =true; 
    workbook.SaveCopyAs(saveFileName); 
    fileSaved=true; 
    }
    catch(Exception ex)

    fileSaved=false; 
    MessageBox.Show("导出文件时出错,文件可能正被打开!\n"+ex.Message); 

    }
    else

    fileSaved=false; 

    xlApp.Quit(); 
    GC.Collect();//强行销毁 
    if(fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
    }
      

  6.   

    当导出excel的时候,在保存和取消页面上显示得数据实际是有几MB德,但是到桌面上只有几KB了请问这是怎么回事。。
      

  7.   

    Excel问题真的多阿~~!为什么总是有这么多问题了
      

  8.   

    3W条数据的excel?晕我的机子肯定打不开...
      

  9.   

    3W条数据小意思..不回打不开的..楼上2层的兄弟太小巧microsoft了楼主的思路不对,应该使用OWC编程的..我处理过类似的问题.数据量有10几万...
      

  10.   

    请问那位高人能帮助小弟解决问题,请问OWC编程怎么写???
      

  11.   

    [email protected]
    楼主明天给我发邮件
      

  12.   

    1. WEBSITE-->>添加引用-->>COM-->>Microsoft Office 11.0 Object Library[需要安装OFFICE 2003的相关组件]
    2.程序中添加引用
    using Microsoft.Office.Interop.Excel;
    using System.Runtime.InteropServices;
    3.
    private Application app = new Application(); //定义EXCEL应用
    app.Application.DisplayAlerts = true;        //
    app.Application.Visible = true;              //设置显示属性
    app.SheetsInNewWorkbook = 1;                 //添加Excel工作簿
    app.Workbooks.Add(@"D:\Table.xls");          //打开预先定义好的表格模版
    app.Cells[x,y] = value;                      //单元格赋值
      

  13.   

    SqlDataReader dr;SqlParameter [] prams = {
    db.MakeInParam("@gonggongxinxi",SqlDbType.Int,4,gonggongxinxi),
    db.MakeInParam("@dinghuoxinxi",SqlDbType.Int,4,dinghuoxinxi),
    db.MakeInParam("@zhenshikucun",SqlDbType.Int,4,zhenshikucun),
    db.MakeInParam("@zubie",SqlDbType.VarChar,50,zubie),
    db.MakeInParam("@kaishishijian",SqlDbType.DateTime,8,kaishishijian),
    db.MakeInParam("@jieshushijian",SqlDbType.DateTime,8,jieshushijian),
    db.MakeInParam("@staff_ID",SqlDbType.Int,4,UserID),
    db.MakeInParam("@LoginChecked",SqlDbType.Int,4,LoginChecked)
    };
    db.RunProc("sp_downDataList",prams,out dr);grdexcel.DataSource = dr;
    grdexcel.DataBind();我是通过存储过程取值,
    请问这样我怎样循环取出xy值,请指点,谢谢
      

  14.   

    前面引用Excel的COM 
    try
    {
    DataSet set1=new DataSet();
    SqlDataAdapter ad=new SqlDataAdapter("select * from YanZheng","server=.;database=PingJiao;uid=sa;pwd=;");
    ad.Fill(set1,"YanZheng");
    this.dataGrid1.DataSource=set1.Tables[0];

    Excel.ApplicationClass excelApp=new Excel.ApplicationClass();
    Excel.Workbook excelBook=excelApp.Workbooks.Add(1);
    Excel.Worksheet excelSheet=(Excel.Worksheet)excelBook.Worksheets[1];
    excelApp.Visible=true;   
    excelSheet.Cells[1,1]="PwdID";   
    excelSheet.Cells[1,2]="PwdString"; 
    DataTable myTable=set1.Tables["YanZheng"];
    for(int i=1;i<myTable.Rows.Count+1;i++)   
    {   
    excelSheet.Cells[i+1,1]=myTable.Rows[i-1][0].ToString();//[i-1,0].ToString();   
    excelSheet.Cells[i+1,2]=myTable.Rows[i-1][1].ToString();    
    }
    File.Delete(@"E:\Documents and Settings\wys\My Documents\Sheet1.xls");
    excelBook.Save();
    string file="xiaohua.xls";
    string [email protected]+@"\"+file+"";
    File.Delete(filepath);
    File.Copy(@"E:\Documents and Settings\wys\My Documents\Sheet1.xls",@Application.StartupPath+@"\"+file+"");
    File.Delete(@"E:\Documents and Settings\wys\My Documents\Sheet1.xls");

    //System.Diagnostics.Process[] processOnComputer = System.Diagnostics.Process.GetProcesses();
    //foreach (System.Diagnostics.Process p in processOnComputer)
    //{
    //this.listBox1.Items.Add(p.ToString());
    //}

    //File.Move(@"E:\Documents and Settings\wys\My Documents\Sheet1.xls",filepath);
    }
    catch(Exception x)
    {
    MessageBox.Show(x.Message);
    }
      

  15.   

    你先弄一个1~2条的DataGrid导出到Excel,起码测试起来很方便。如果不行就在baidu搜DataGrid导出到Excel。有很多。
      

  16.   

    1. WEBSITE-->>添加引用-->>COM-->>Microsoft Office 11.0 Object Library[需要安装OFFICE 2003的相关组件]
    2.程序中添加引用
    using Microsoft.Office.Interop.Excel;(我的电脑没有这个.Excel,请问是怎么回事,office2003也安装了,office2000也安装了,为什么找不到上面的帮主的那个引用了)
      

  17.   

    安装OFFICE的时候要选择自定义安装,然后在EXCEL里面的第一项会有.NET*****的一个项目.把这个选上就可以了.
    或者索性选择高级安装以后把所有OFFICE全部安装..
      

  18.   


    该操作在C/S下准备不会出问题!
    这个异常是因为你的IIS服务器等待时间过长~,可以在IIS里重新设置
      

  19.   

    请问是不是设置IIS里面的连接超时,如果通过存储过程把数据取出,存放到SqlDataReader里面,我怎么样循环取出列名,然后在取出数据~,我怎么样取循环
      

  20.   

    http://www.cnblogs.com/fhj2050/articles/633180.html
      

  21.   

    http://www.cnblogs.com/mail-ricklee/archive/2007/01/22/627362.htmlNickLee.Framework中的NickLee.Common.ExcelLite专门的excel生成控件
    你可以参考