//開啟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' ";
補充一些細節
- 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();
}
留言列表