求高手帮忙修改此代码,已经实现了数据导出生成Excel,但是有2个问题,
1.如果数据集超过65535条,应该怎么修改此代码保证不异常。
2.表头是直接读数据库字段名称,可以修改为各个字段名字,中文显示在Excel表头里吗?
      public static void CreateExcel(DataSet ds, string fileName) 
      {     
          //输出形式为excel    
          HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";     
          //指定下载的文件名称     
          HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlPathEncode(fileName));
          //指定字符编码格式(避免出现乱码)     
          HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("gb2312");     
          DataTable table = ds.Tables[0];     
          string header = "";     
          string content = "";     
          int i;     
          //输入标题     
          for (i = 0; i < table.Columns.Count - 1; i++)     
          {
              header += table.Columns[i].Caption + "\t";     
          }
          //标题最后一列要换行    
          header += table.Columns[i].Caption + "\n";     
          HttpContext.Current.Response.Write(header);     
          //输出数据     
          foreach (DataRow row in table.Rows)     
          {         
              for (i = 0; i < table.Columns.Count - 1; i++)         
              {             
                  content += row[i].ToString() + "\t";         
              }         
              content += row[i].ToString() + "\n";     
          }     
          //输出数据的内容     
          HttpContext.Current.Response.Write(content);    
          HttpContext.Current.Response.End(); 
      }
望高手指点,最主要是第一个问题怎么解决?

解决方案 »

  1.   

    先说明一下,下面给你代码。
    1.用dataset里的datatable对应 excel的表单。
    2.datatable里修改。
      

  2.   

    懒得复制了,
    参考   http://jasondct.blog.163.com/blog/static/81820673201111481221348/
      

  3.   

    注意是两个问题计算行和excel 表单数量。
    和孟兄交流的问题
    http://topic.csdn.net/u/20111204/16/a4afa0ef-3657-48d8-86db-c923fdd3a4b6.html
      

  4.   


    不是多个表导入到Excel,是一个表里有65535条信息了 使用这个代码导出Excel怎么修改???
      

  5.   

    1.先以文件的方式寫在服務器上:超過65535換個文件寫。然後把寫出來的文件打包成功RAR的方式下載。
    2.準備一個超多Sheet的Excel模版,然後把按照65535條記錄用OleDb的方式插入到Sheet中。前提是你的Sheet要夠多。
    說明:程序不可能支持任何條數據。但是儘可能滿足用戶需求就是。
    比如:支持再好一有局限性。
    就算是DataBase來說:一個表的數據也是有限的。實際情況來將是這樣的。數據多了就慢。況且全部給用戶的話,這麼多數據也沒什麼意義了。計算機都處理不過來,我們的user看了也沒用的哈。
      

  6.   

    大數據量時:string 和StringBuilder肯定會溢出的
      

  7.   

    这是我找的相关代码提示,高手 能不能看看怎么修改我的代码类似这样的思路关键代码:
    备注:完整的代码是偶写的工程代码,版权所有的。但大家可以根据我的思路和关键代码的提示自己完成想要的功能,呵呵
    代码片段一 sheet创建:
    //生成创建表的脚本
            StringBuilder sb = new StringBuilder();
            sb.Append("CREATE TABLE ");
            sb.Append("[" + tableName + "] ( ");        for (int i = 0; i < headers.Length; i++)
            {
                string datatype;
                switch (dt.Columns[columns[i]].DataType.Name.ToLower())
                {
                    case "float": datatype = "float"; break;
                    case "int32": datatype = "int"; break;
                    case "double": datatype = "double"; break;
                    case "decimal": datatype = "float"; break;
                    default: datatype = "text"; break;
                }
                if (i < headers.Length - 1)
                {
                    sb.Append(string.Format("[{0}] {1},", headers[i], datatype));
                }
                else
                {
                    sb.Append(string.Format("[{0}] {1})", headers[i], datatype));
                }
            }
            return sb.ToString();大家看到了把,我们可以使用create语句创建sheet。我们使用的表的名称,将变成sheet名称。
    建议大家导出的名称可以这样依次起:比如产品信息数据,表名可以分别叫 产品信息(第1页)、产品信息(第2页)等等。代码片段二 按照需要自动创建多个sheet:for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //创建sheet
                    if (i % 65535 == 0)
                    {
                        tableName = string.Format("{0}Page{1}", dt.TableName, (i / 65535) + 1);
                        objCmd.CommandText = GetCreateSheetSQL(dt, headers, columns, tableName);
                        objCmd.ExecuteNonQuery();
                    }
                    插入语句#region 插入语句
                    sb.Append("INSERT INTO ");
                    sb.Append("[" + tableName + "] ( ");
    .
      

  8.   

    你看看"孟子E章"的这篇文章就会弄了 http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx
      

  9.   

    如果数据量超过65535怎么办???  
    excel加载数据是用的全部加载模式。2007这前的不支持超过65535的数据量。
      

  10.   

    1:每个sheet最多最多65535行数据,但一个文件可以有很多个sheet文件,如果您要导出的数据超过65535个,那么需要设法把多余的数据放到第二、三....个sheet中去。