我导出的EXCEL读取出现"外部表不是预期的格式",那位有做过.可以把源代码帖上让我看看吗?

解决方案 »

  1.   

    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"];
       string name=System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString()+DateTime.Today.ToString("yyyyMMdd")+new Random(DateTime.Now.Millisecond).Next(10000).ToString()+".xls";//存放到 web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数
       FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write);
       StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));
       sw.WriteLine("自动编号,姓名,年龄");
       foreach(DataRow dr in dt.Rows)
       {
        sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);
       }
       sw.Close();
       Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));
       Response.ContentType = "application/ms-excel";// 指定返回的是一个不能被客户端读取的流,必须被下载
       Response.WriteFile(name); // 把文件流发送到客户端
       Response.End();
      

  2.   

    从datagrid导出html代码,生成excel文件,给客户端下载优点:
    1、有固定的格式,样子好看(datagrid的样子)局限性:
    1、不适合数据交换,里面有html代码,比较乱,没有固定格式
    2、datagrid不能有分页、排序等,否则出错实现方法:
    Response.Clear();
       Response.Buffer= false;
       Response.Charset="GB2312";
       Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");
       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);
       this.DataGrid1.RenderControl(oHtmlTextWriter);
       Response.Write(oStringWriter.ToString());
       Response.End();