对于Excel文件,想必大家也都知道这个的重要性,无论是做哪种语言的开发,都少不了对Excel文件的操作;
后面会用三种方式用来读取Excel,用来满足不同的项目需求;
第一种方式就是本文所要讲的OleDb的方式,此方式比较简单,而且也不需要引用其他的第三方DLL,读取速度也还可以,但是对于一些其他的细节操作,可能需要读取到数据之后再直接对数据源进行优化;
OleDb连接方式,使用ADO.NET打开来获取Excel的数据源;
这里也再简单介绍下链接字符串中各个字段的意思:
stringconnStr="Provider=Microsoft.ACE.OLEDB.12.0;"+"DataSource="+excelPath+";"+";ExtendedProperties=\"Excel12.0;HDR=YES;IMEX=1\"";
Provider是用来提供程序连接到Excel;DataSource是要读取的Excel文件;ExtendedProperties是设置Excel的属性;HDR用来指示第一行是否为表头;IMEX表示对文件操作的各种模式(0:写模式,1:读模式)
实现功能:
1、使用Oledb将Excel文件中的数据显示到dataGridView
2、使用Sql语句添加数据到Excel
开发环境:
开发工具:VisualStudio2013
.NETFramework版本:4.5
实现代码:
privatevoidGetExcel(){//实例化一个datatable用来存储数据DataTabledt=newDataTable();//指定excel所在路径stringexcelPath="d:\\1.xlsx";//Offic2007以上连接字符串stringconnStr="Provider=Microsoft.ACE.OLEDB.12.0;"+"DataSource="+excelPath+";"+";ExtendedProperties=\"Excel12.0;HDR=YES;IMEX=1\"";//Offic2007以下连接字符串if(excelPath.ToLower().EndsWith(".xls")){connStr="Provider=Microsoft.Jet.OLEDB.4.0;"+"DataSource="+excelPath+";"+";ExtendedProperties=\"Excel8.0;HDR=YES;IMEX=1\"";}OleDbConnectionOleConn=newOleDbConnection(connStr);OleConn.Open();//返回excel文件的结构信息DataTabledtSheet=OleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);//取第一个sheet页的数据stringsql=string.Format("SELECT*FROM[{0}]",dtSheet.Rows[0]["TABLE_NAME"]);OleDbDataAdapterOleDaExcel=newOleDbDataAdapter(sql,OleConn);OleDaExcel.Fill(dt);//展示到页面dataGridView1.DataSource=dt;//关闭链接OleConn.Close();}
到这里,读取的代码就完成了,这时候肯定有朋友在想,既然可以用ADO.NET去做查询,那是否可以去做更新或者插入呢?结果当然是可以的了,按照我们上面所介绍的,需要先将IMEX的值设置为0,即可写模式,如下:
stringconnStr="Provider=Microsoft.ACE.OLEDB.12.0;"+"DataSource="+excelPath+";"+";ExtendedProperties=\"Excel12.0;HDR=YES;IMEX=0\"";
然后就可以跟操作数据库一样直接写Insert语句了,部分代码如下:
stringsql=string.Format("insertinto[{0}]values('赵六','女','23')",dtSheet.Rows[0]["TABLE_NAME"]);OleDbCommandcmd=newOleDbCommand(sql,OleConn);cmd.ExecuteNonQuery();