xudongyh的专栏

我的博客:http://www.wangxudong.com

真实姓名ID:xudongyh
779次访问,排名2万外好友1人,关注者0
从事GIS开发,现在做土地二次调查,现在做C/S版,以后做B/S,嵌入式开发,在ASP.NET开发有丰富的经验
xudongyh的文章
原创 6 篇
翻译 0 篇
转载 0 篇
评论 4 篇
xudongyh的公告
博客园的博客:http://xudongyh.cnblogs.com(经常更新,欢迎访问)
最近评论
zjclugger:如果我想合并第一行第二列和第二行第二列的两个单元格,那应该如何实现?请指教,谢谢:)
xudongyh:共同学习啊.谢谢~~~~
cpp2017:看了楼主的批评,应该是说我吧,虚心接受,我的文章确实写得够简单。
不过你的这种方法我也提到了,是第三部分4/2 号(同一天的文章)原理是一样的。
http://blog.csdn.net/cpp2017/archive/2008/04/02/2245396.aspx
likenote:俺手里有个水城手机域名,呵呵
shuicheng.mobi
文章分类
    收藏
      相册
      我的相册
      我的博客
      东哥的天空(RSS)
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 asp.net导出数据到Excel的方法(完全无组件) 收藏

       | 旧一篇: 华为员工,今天您跳了吗?跳楼真是很爽很刺激,压力大的都去吧。

      今天看见CSDN首页那几个ASP.NET导出Excel的文章,实在受不了了,现在谁还用Dcom阿?写的文章还只言片语,现在我给大家一个完整的代码,不用Excel.exe.

      今天把大家最常用的功能 ---asp.net导出数据到Excel, 通常的方法 是组件形式的,但是ASP.NET
      对杀死Excel.exe支持不够好,特别还需要设置dcom太麻烦了.现在我给大家的是我做 开发,已经应用到实际
      项目的方法,该方法不用调用Excel.exe进程.有不明白的,可以在下面留言,我会做解答的. 

       

      using System;
      using System.Text;
      using System.Data;
      using System.Data.OleDb;

      namespace PowerAgent.DBUtility
      {
          
      /// Copyright (C) 2004-2008 WangXudong 
          
      /// http://www.wangxudong.com && http://xudongyh.cnblogs.com
          
      /// DataToExcel 的摘要说明。
          
      /// </summary>

          public class DataToExcel
          
      {
              
      const string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;";

              
      public DataToExcel()
              
      {
              }


              
      public string DataTableToExcel(DataTable dt, string excelPath)
              
      {
                  
      if (dt == null)
                  
      {
                      
      return "DataTable不能为空";
                  }


                  
      int rows = dt.Rows.Count;
                  
      int cols = dt.Columns.Count;
                  StringBuilder sb;
                  
      string connString;

                  
      if (rows == 0)
                  
      {
                      
      return "没有数据";
                  }


                  sb 
      = new StringBuilder();
                  connString 
      = string.Format(ConnectionString, excelPath);

                  
      //生成创建表的脚本
                  sb.Append("CREATE TABLE ");
                  sb.Append(dt.TableName 
      + " ( ");

                  
      for (int i = 0; i < cols; i++)
                  
      {
                      
      if (i < cols - 1)
                          sb.Append(
      string.Format("{0} varchar,", dt.Columns[i].ColumnName));
                      
      else
                          sb.Append(
      string.Format("{0} varchar)", dt.Columns[i].ColumnName));
                  }


                  
      using (OleDbConnection objConn = new OleDbConnection(connString))
                  
      {
                      OleDbCommand objCmd 
      = new OleDbCommand();
                      objCmd.Connection 
      = objConn;

                      objCmd.CommandText 
      = sb.ToString();

                      
      try
                      
      {
                          objConn.Open();
                          objCmd.ExecuteNonQuery();
                      }

                      
      catch (Exception e)
                      
      {
                          
      return "在Excel中创建表失败,错误信息:" + e.Message;
                      }


                      
      生成插入数据脚本


                      
      //建立插入动作的Command
                      objCmd.CommandText = sb.ToString();
                      OleDbParameterCollection param 
      = objCmd.Parameters;

                      
      for (int i = 0; i < cols; i++)
                      
      {
                          param.Add(
      new OleDbParameter("@" + dt.Columns[i].ColumnName, OleDbType.VarChar));
                      }


                      
      //遍历DataTable将数据插入新建的Excel文件中
                      foreach (DataRow row in dt.Rows)
                      
      {
                          
      for (int i = 0; i < param.Count; i++)
                          
      {
                              param[i].Value 
      = row[i];
                          }


                          objCmd.ExecuteNonQuery();
                      }


                      
      return "数据已成功导入Excel";
                  }
      //end using
              }

          }
      //end class
      }

      发表于 @ 2008年04月04日 00:11:00|评论(loading...)|编辑

       | 旧一篇: 华为员工,今天您跳了吗?跳楼真是很爽很刺激,压力大的都去吧。

      评论

      #cpp2017 发表于2008-04-04 12:01:57  IP: 121.34.110.*
      看了楼主的批评,应该是说我吧,虚心接受,我的文章确实写得够简单。
      不过你的这种方法我也提到了,是第三部分4/2 号(同一天的文章)原理是一样的。
      http://blog.csdn.net/cpp2017/archive/2008/04/02/2245396.aspx
      #xudongyh 发表于2008-04-05 20:21:14  IP: 125.33.192.*
      共同学习啊.谢谢~~~~
      #zjclugger 发表于2008-04-23 14:46:33  IP: 219.133.4.*
      如果我想合并第一行第二列和第二行第二列的两个单元格,那应该如何实现?请指教,谢谢:)
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © xudongyh