1. 程式人生 > >C#實戰003:Excel操作系列-OleDb連結Excel

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 檔案可同時支援“讀寫”用途。