//開啟Excel檔案
string ExcelPath = System.Windows.Forms.Application.StartupPath + EXCEL檔案名稱;

string OpenExcelData = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelPath + ";Extended Properties ='Excel 

8.0;HDR=Yes;IMEX=2;ReadOnly=0' ";

補充一些細節

  1. Excel 8.0  : 為  Excel 格式,這個格式從 Excel 97 到 Excel 2003 都相容

     2. HDR ( HeaDer Row ) : 

            若設定值為 Yes,代表 Excel 檔中的工作表第一列是欄位名稱

            若設定值為 No,代表 Excel 檔中的工作表第一列就是資料了,沒有欄位名稱

     3.IMEX ( IMport EXport mode )

             IMEX=0 時,「匯出模式」, Excel 檔案只能用來做「寫入」用途。

             IMEX=1 時,「匯入模式」, Excel 檔案只能用來做「讀取」用途。

             IMEX=2 時,「連結模式」,Excel 檔案「讀寫」。

string OutputSheet = "Select * From [表格名稱]"; //表格名稱 要填入您EXCEL 上Sheet 的名稱

OleDbConnection ExcelConnection = new OleDbConnection(OpenExcelData);

try
{
      ExcelConnection.Open(); //開啟檔案連結

     //讀取output
     OleDbCommand ExCommendOut = new OleDbCommand(OutputSheet, ExcelConnection);
     OleDbDataAdapter dataAdapterOut = new OleDbDataAdapter(ExCommendOut);  
     DataTable dTableOut = new DataTable();
     dataAdapterOut.Fill(dTableOut);

     dgvExcelOut.DataSource = dTableOut;

補充一些細節

dataAdapterOut.Fill(dTableOut);

   OleDbDataAdapter 是 DataSet 和資料來源之間的橋接器,用來擷取和儲存資料。OleDbDataAdapter 會提供這個橋接器,方法是使用 Fill 從資料來源將資料載入    DataSet,並使用 Update 將 DataSet 中所做的變更傳送至資料來源。

dgvExcelOut.DataSource = dTableOut;

將 DataGridView  命名為 dgvExcelOut 

     //自動調整DataGridView欄寬

     dgvExcelOut.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; 
     dTableOut.Dispose();
     dataAdapterOut.Dispose();

     //關閉檔案連結 釋放記憶體 若不關閉則系統會占用資源 匯入成功時一定要關閉
     ExCommendOut.Dispose();
     ExcelConnection.Close();
     ExcelConnection.Dispose();
}
catch (Exception ex)
{
      MessageBox.Show("檔案讀取失敗!\n" + ex.Message, "資料處理錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
      if (ExcelConnection != null)
            ExcelConnection.Close();
}

arrow
arrow
    全站熱搜

    Jacson 發表在 痞客邦 留言(0) 人氣()