1. 程式人生 > >c#用OleDb讀寫excel

c#用OleDb讀寫excel

 string _strCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Book1.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
                OleDbConnection _con = new OleDbConnection(_strCon);//@"E:\Book1.xls"
                _con.Open();
                string _strSelectCMD = "select * from [Sheet1$]";
                OleDbDataAdapter _adapter = new OleDbDataAdapter(_strSelectCMD,_con);
                DataSet _set = new DataSet();
                _adapter.Fill(_set, "Sheet1");
                DataTable _table = _set.Tables[0];
                for (int i = 0; i < _table.Rows.Count; i++)
                {
                    string _str1 = _table.Rows[i][0].ToString();
                    string _str2 = _table.Rows[i][1].ToString();
                    string _str3 = _table.Rows[i][2].ToString();
                }

                _con.Close();

====================================================================================

 //獲取副檔名
        string strExtension = System.IO.Path.GetExtension(strExcelPath);
        string strFileName = System.IO.Path.GetFileName(strExcelPath);
switch (strExtension)
        {
            case ".xls":
                objConn = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;\"");
           break;
            case ".xlsx":
                objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1;\""
);
                break;
            default:
                objConn = null;
               break;

下面說明一下連線字串

        HDR=Yes,這代表第一行是標題,不做為資料使用(但是我在實際使用中,如果第一行存在複雜數值,那麼讀取得到的Datatable列標題會自動設定為F1、F2等方式命名,與實際應用不符,所以當時是通過HDR=No方式將所有內容讀取到Datatable中,然後手動將第一行設定成標題的);IMEX ( IMport EXport mode )設定  IMEX 有三種模式:  0 is Export mode  1 is Import mode  2 is Linked mode (full update capabilities)  我這裡特別要說明的就是 IMEX 引數了,因為不同的模式代表著不同的讀寫行為:  當 IMEX=0 時為“匯出模式”,這個模式開啟的 Excel 檔案只能用來做“寫入”用途。  當 IMEX=1 時為“匯入模式”,這個模式開啟的 Excel 檔案只能用來做“讀取”用途。  當 IMEX=2 時為“連結模式”,這個模式開啟的 Excel 檔案可同時支援“讀取”與“寫入”用途。

---------------------------------

另外,讀取Excel2007版本的檔案時,版本應該從8.0改為12.0,同時驅動不能再用Jet,而應該用ACE。負責會造成“找不到可安裝的 ISAM”的錯誤。

======================================================================

OleDb

說明:使用Microsoft Jet 提供程式用於連線到 Excel 工作簿,將Excel檔案作為資料來源來讀寫
優點:簡單快速,能夠操作高版本Excel
缺點:只能夠進行有限的操作(讀、寫)

今天學習使用OleDb操作Excel檔案

連線字串:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'
provider:表示提供程式名稱
Data Source:這裡填寫Excel檔案的路徑
Extended Properties:設定Excel的特殊屬性
Extended Properties 取值:
Excel 8.0 針對Excel2000及以上版本,Excel5.0 針對Excel97。
HDR=Yes 表示第一行包含列名,在計算行數時就不包含第一行
IMEX 0:匯入模式,1:匯出模式:2混合模式

1.讀取excel檔案


2.獲取工作簿中所有的工作表



3.寫入資料到Excel表



4.建立Excel檔案並寫入資料


http://www.jb51.net/article/65377.htm

=============================================