导出DataSet的数据到Excel中

public void writeExcel()
  {
      try
      {
          string strCmd = string.Empty;
          OleDbCommand cmd;
          OleDbConnection conn;
          //string strConn = "Provider=Microsoft.Jet.Oledb.4.0;
          Data Source=" + Dir + "\\"+fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
          //HDR=YES 表示将sheet的第一行作为列名,所以我们默认excel的首行是列名。
            //IMEX=1 表示大致的意思是使用导入的模式,把数字也作为字符串来操作
            //有一点很重要。IMEX=1,是一种导入的模式,所以首先这个文件要存在,如果不存在会报错:
            // “Microsoft Jet 数据库引擎找不到对象'…\Customer.xls'。请确定对象是否存在,并正
            //确地写出它的名称和路径”,而且这样写了以后就算文件是存在的,还有一个问题是不能对文
            //件更新的,会提示“不能修改表 'sheet1' 的设计。它在只读数据库中”等错误,甚至还有提
            //示权限的问题。
                                 
           conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;"+ 
          "Data Source=" + @"D:\test.xls"+";Extended Properties= 'Excel 8.0;HDR=Yes;'" );
          cmd = new OleDbCommand();
          cmd.Connection = conn;

           ds =this.voteDataSet;//取得要导出的表
             conn.Open();
           strCmd = "CREATE TABLE [Sheet1]( ";
           foreach (DataColumn dc in ds.Tables[0].Columns)
           {
             strCmd += "[" + dc.ColumnName + "]   nvarchar(20), ";
           }
           strCmd = strCmd.Trim().Substring(0, strCmd.Length - 2);
           strCmd += ") ";
               

           cmd.CommandText = strCmd;

           cmd.ExecuteNonQuery();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
             if (dr.RowState != System.Data.DataRowState.Deleted)
              {
                strCmd = "insert   into   [Sheet1$]   values( ";
                foreach (DataColumn dc in ds.Tables[0].Columns)
                 {
                   strCmd += " ' " + dr[dc.ColumnName].ToString() + " ', ";
                 }

                 strCmd = strCmd.Substring(0, strCmd.Length - 2);
                 strCmd += ") ";

                 cmd.CommandText = strCmd;

                 cmd.ExecuteNonQuery();


              }
             }
            conn.Close();
            }
      catch (Exception ex)
      {
       throw ex;
      }    
   
} 

  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值