//載入Excel public DataSet LoadDataFromExcel(string filePath) { try { string strConn; //strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'"; strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'", filePath); OleDbConnection OleConn = new OleDbConnection(strConn); OleConn.Open(); String sql = "SELECT * FROM [Sheet1$]";//可是更改Sheet名稱,比如sheet2,等等 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); DataSet OleDsExcle = new DataSet(); OleDaExcel.Fill(OleDsExcle, "Sheet1"); OleConn.Close(); return OleDsExcle; } catch (Exception err) { return null; } } /// <summary> /// DataTable直接匯出Excel,此方法會把DataTable的資料用Excel開啟,再自己手動去儲存到確切的位置 /// </summary> /// <param name="dt">要匯出Excel的DataTable</param> /// <returns></returns> public bool DoExport(System.Data.DataTable dt) { Microsoft.Office.Interop.Excel.Application app = new ApplicationClass(); if (app == null) { throw new Exception("Excel無法啟動"); } app.Visible = true; Workbooks wbs = app.Workbooks; Workbook wb = wbs.Add(Missing.Value); Worksheet ws = (Worksheet)wb.Worksheets[1]; int cnt = dt.Rows.Count; int columncnt = dt.Columns.Count; // *****************擷取資料******************** object[,] objData = new Object[cnt + 1, columncnt]; // 建立快取資料 // 擷取欄位標題 for (int i = 0; i < columncnt; i++) { objData[0, i] = dt.Columns[i].ColumnName; } // 擷取具體資料 for (int i = 0; i < cnt; i++) { System.Data.DataRow dr = dt.Rows[i]; for (int j = 0; j < columncnt; j++) { objData[i + 1, j] = dr[j]; } } //********************* 寫入Excel****************** Range r = ws.get_Range(app.Cells[1, 1], app.Cells[cnt + 1, columncnt]); r.NumberFormat = "@"; //r = r.get_Resize(cnt+1, columncnt); r.Value2 = objData; r.EntireColumn.AutoFit(); app = null; return true; }