OleDb把excel文件作为数据源来读取,直接用Sql语句来操作数据,并且不需要安装Office Excel就可以使用,所以用OLEDB方式读取EXCEL的速度是非常快的。但是当Excel数据量很大时,会非常占用内存,当内存不够时会抛出内存溢出的异常,容易丢失数据,因为是Sql语句来操作数据的,所以灵活性较低,如果你处理的数据不大且无需复杂操作时可以使用OLEDB方式读写EXCEL。
首先我们引入以下模块:
using System.Data;
using System.Data.OleDb;
using System.IO;
然后在类中写如下方法即可成功链接Excel,
public string ExcelPath = @"C:\Users\Administrator\Desktop\test.xlsx";
public void getExcel(string ExcelPath)
{
if (File.Exists(ExcelPath))//判断文件是否存在
{
string strConn = "";
FileInfo file = new FileInfo(ExcelPath);//读取excel文件名
string fileType = file.Extension;//提取excel文件名后缀,判断文件名类型
//----------------------------获取Excel表格数据---------------------------
if (fileType == ".xls")
//读取“.xls”时使用"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelPath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + ExcelPath + ";Extended Properties=Excel 8.0";
else
//读取“.xlsx”时使用 "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelPath + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'"
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" + ExcelPath + ";Extended Properties=Excel 8.0";
OleDbConnection myCon = new OleDbConnection(strConn); //连接数据库
myCon.Open();//打开数据库
}
}
HDR=Yes,这代表第一行是标题,不做为数据使用,系统默认的是YES
IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
IMEX=2 时为“链接模式”,这个模式开启的 Excel 档案可同时支持“读写”用途。