page_load()
{
 if(!ispostback)
 {
 //生成table
 }
}button_click()
{
   DataSet ds=new DataSet(); 
   da.Fill(ds,"table1"); 
   DataTable dt=ds.Tables["table1"]; 
   StringWriter sw=new StringWriter(); 
   sw.WriteLine("自动编号,姓名,年龄"); 
   foreach(DataRow dr in dt.Rows) 
   { 
    sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]); 
   } 
   sw.Close(); 
   SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]); 
   SqlDataAdapter da=new SqlDataAdapter("select * from tb1",conn); 
   DataSet ds=new DataSet(); 
   da.Fill(ds,"table1"); 
   DataTable dt=ds.Tables["table1"]; 
   StringWriter sw=new StringWriter(); 
   foreach(DataRow dr in dt.Rows) 
   { 
    sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]); 
   } 
   sw.Close(); 
   Response.AddHeader("Content-Disposition", "attachment; filename=test.csv"); 
   Response.ContentType = "application/ms-excel"; 
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 
   Response.Write(sw); 
   Response.End(); 
   Response.ContentType = "application/ms-excel"; 
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 
   Response.Write(sw); 
   Response.End(); 
}
我现在是用table做显示的,用了这种方法导excel,在执行了导出后,table能保持显示状态,但是如果这个导出的click事件里面什么也不做的话,table就不显示了,经分析,发现是Response.AddHeader("Content-Disposition", "attachment; filename=test.csv"); 这一句话的效果,请问,为什么这句话能保持table的状态呢? 我的table是动态生成的。
这么一个过程:
进入这个界面—〉table生成了并显示-〉点击导出button->excel导出,如果这个button事件里面什么也不做,则table不见了 。
哪位大哥大姐帮忙讲讲为何这个导出事件后,table能够保持显示?????

解决方案 »

  1.   

    Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");这个是动态生成table,你也可以这样将Excel表格的内容填充到DATASET对象里,同显示到表格里是一样的.
    void SubmitBtn_Click(object sender, System.EventArgs e)
    {
    // 获取Excep文件的完整路径
    string source = File1.Value; string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source + ";Extended Properties=Excel 8.0";
    string query = "SELECT * FROM [Sheet1$]"; OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(ConnStr));
    OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
    DataSet myDataSet = new DataSet(); // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象
    oleAdapter.Fill(myDataSet, "[Sheet1$]"); // 数据绑定
    DataGrid1.DataSource = myDataSet;
    DataGrid1.DataMember = "[Sheet1$]";
    DataGrid1.DataBind();
    }