C#实战003:Excel操作系列-OleDb链接Excel

    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 档案可同时支持“读写”用途。
 

猜你喜欢

转载自blog.csdn.net/kevinfan2011/article/details/83926539