正文

用ODBC导出数据到Excel中2007-10-19 09:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/tujun/30209.html

分享到:

数据导出到Excel不一定要用Office的COM,利用ODBC也可以做到!

 

定义一个连接Excel文件的连接字符串:

String excelSql = @"Driver={Microsoft Excel Driver (*.xls)};READONLY=FALSE;DriverId=790;Dbq={0};DefaultDir=c:\;" ;

其中的{0}要实际替换为目标文件的路径和全名.

this.saveFileDialog1.Filter = "Excel文件.xls | *.xls";

string saveFileName  = "";
   DialogResult dr = this.saveFileDialog1.ShowDialog();
   if(dr != DialogResult.Cancel)
   {
    saveFileName = saveFileDialog1.FileName;
    if(File.Exists(saveFileName))
    {
     File.Delete(saveFileName);//删除目标文件
    }
      File.Copy("Book1.xls",saveFileName,true);//复制母板文件为目标文件

}

else

return;//保存文件对话框中选择了'取消'

}
 String conSql =excelSql.Replace("{0}",saveFileName);//替换连接字符串中的占位符
 OdbcConnection cnn = new OdbcConnection(conSql);

try{

cnn.Open();//打开连接

}

catch

{

return;//打开连接失败,退出

}

///下面在Excel文件中创建一个sheet

String sql = @"CREATE TABLE [新增Sheet] (
        [姓名] varchar(32),
        [单位名称] varchar(200)

       )";
      OdbcCommand cmd = new OdbcCommand(sql,cnn);
      try
      {
       cmd.ExecuteNonQuery();
      }
      catch
      {
       cnn.Close();
       cmd.Dispose();
       MessageBox.Show("导出失败!",this.title);
       return;
      }
      cmd.Dispose();

      sql = @"Select * from [新增Sheet]";
       cmd = new OdbcCommand(sql,cnn);
      DataSet newDs = new DataSet();

      OdbcDataAdapter adp = new OdbcDataAdapter(cmd);//生成DataAdapter

      try
      {
       adp.Fill(newDs);//生成一个空的数据集
      }
      catch
      {
       adp.Dispose();
       newDs.Dispose();
       cnn.Close();
       cmd.Dispose();
       MessageBox.Show("导出失败!",this.title);
       return;
      
      }
      DataSet ds = (DataSet)this.listView1.Tag;//listView1.Tag中保存的是要导出的dataset
      foreach(DataRow row in ds.Tables[0].Rows)//往目标数据集复制数据
      {
       DataRow newRow  = newDs.Tables[0].NewRow();
       newRow["姓名"] = row["姓名"];
       newRow["单位名称"] = row["单位名称"];

       newDs.Tables[0].Rows.Add(newRow);
      }
      OdbcCommandBuilder cb = new OdbcCommandBuilder(adp);//生成插入数据需要的Command
      int k = adp.Update(newDs);//插入数据到Excel中
      adp.Dispose();
      cnn.Close();
      cmd.Dispose();
      cb.Dispose();
      MessageBox.Show("导出成功,共导出" + k.ToString() + "条数据,文件保存在:" + saveFileName,
       this.title);

阅读(4310) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册