当前位置:   article > 正文

C# 操作Excel文件之OleDb方式

oledb写excel

对于Excel文件,想必大家也都知道这个的重要性,无论是做哪种语言的开发,都少不了对Excel文件的操作;

后面会用三种方式用来读取Excel,用来满足不同的项目需求;

70d0e901cf287c30b32b96c0888dc28c.png

第一种方式就是本文所要讲的OleDb的方式,此方式比较简单,而且也不需要引用其他的第三方DLL,读取速度也还可以,但是对于一些其他的细节操作,可能需要读取到数据之后再直接对数据源进行优化;

OleDb连接方式,使用ADO.NET打开来获取Excel的数据源;

这里也再简单介绍下链接字符串中各个字段的意思:

string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";

Provider是用来提供程序连接到Excel;Data Source是要读取的Excel文件;Extended Properties 是设置 Excel 的属性;HDR用来指示第一行是否为表头;IMEX表示对文件操作的各种模式(0:写模式,1:读模式)


实现功能:

  1. 使用Oledb将Excel文件中的数据显示到dataGridView
  2. 使用Sql语句添加数据到Excel

开发环境:

  1. 开发工具:Visual Studio 2013
  2. .NET Framework版本:4.5

实现代码:

  1. private void GetExcel()
  2. {
  3. //实例化一个datatable用来存储数据
  4. DataTable dt = new DataTable();
  5. //指定excel所在路径
  6. string excelPath = "d:\\1.xlsx";
  7. //Offic2007以上连接字符串
  8. string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
  9. //Offic2007以下连接字符串
  10. if (excelPath.ToLower().EndsWith(".xls"))
  11. {
  12. connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
  13. }
  14. OleDbConnection OleConn = new OleDbConnection(connStr);
  15. OleConn.Open();
  16. //返回excel文件的结构信息
  17. DataTable dtSheet = OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
  18. //取第一个sheet页的数据
  19. string sql = string.Format("SELECT * FROM [{0}]", dtSheet.Rows[0]["TABLE_NAME"]);
  20. OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
  21. OleDaExcel.Fill(dt);
  22. //展示到页面
  23. dataGridView1.DataSource = dt;
  24. //关闭链接
  25. OleConn.Close();
  26. }

 到这里,读取的代码就完成了,这时候肯定有朋友在想,既然可以用ADO.NET去做查询,那是否可以去做更新或者插入呢?结果当然是可以的了,按照我们上面所介绍的,需要先将IMEX的值设置为0,即可写模式,如下:

string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=0\"";
然后就可以跟操作数据库一样直接写Insert语句了,部分代码如下:
  1. string sql = string.Format("insert into [{0}] values ('赵六','女','23')", dtSheet.Rows[0]["TABLE_NAME"]);
  2. OleDbCommand cmd = new OleDbCommand(sql, OleConn);
  3. cmd.ExecuteNonQuery();

由简入繁,拿来即用

后续精彩,持续关注

欢迎关注公众号: dotnet编程大全

技术群: 需要进技术群的添加小编微信mm1552923,备注:加群;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/612037
推荐阅读
相关标签
  

闽ICP备14008679号