C#實戰003:Excel操作系列-OleDb連結Excel
阿新 • • 發佈:2018-11-10
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 檔案可同時支援“讀寫”用途。