1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Data; 6 using System.Data.OleDb; 7 using System.IO; 8 9 namespace ExcelRead 10 { 11 public static class ExcelOperate 12 { 13 /// <summary> 14 /// 根据表格名称获取Excel中表格 15 /// </summary> 16 /// <param name="path"></param> 17 /// <param name="sheetName"></param> 18 /// <returns></returns> 19 public static DataTable GetTableFromExcel(string path, string sheetName) 20 { 21 // Path.GetExtension(path) == "xlsx" ? "Provider=Microsoft.Ace.OleDb.12.0;" : 22 string parame = "Provider=Microsoft.Jet.OleDb.4.0;"; 23 string strConn = string.Format("{0}Data Source=" + path + ";Extended Properties=\'Excel 8.0;HDR=YES;IMEX=1\'", parame); 24 OleDbConnection OleConn = new OleDbConnection(strConn); 25 OleConn.Open(); 26 String sql = string.Format("SELECT * FROM [{0}$]", sheetName); 27 28 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); 29 DataSet OleDsExcle = new DataSet(); 30 OleDaExcel.Fill(OleDsExcle, sheetName); 31 OleConn.Close(); 32 33 DataTable table = OleDsExcle.Tables[0]; 34 return table; 35 } 36 /// <summary> 37 /// 获取Excel中所有的表格名称 38 /// </summary> 39 /// <param name="path"></param> 40 /// <returns></returns> 41 public static List<String> GetSheetNameFromExcel(string path) 42 { 43 // Path.GetExtension(path) == ".xlsx" ? "Provider=Microsoft.Ace.OleDb.12.0;" : 44 List<String> names = new List<string>(); 45 string parame ="Provider=Microsoft.Jet.OleDb.4.0;"; 46 string strConn = string.Format("{0}Data Source=" + path + ";Extended Properties=\'Excel 8.0;HDR=YES;IMEX=1\'", parame); 47 48 OleDbConnection conn = new OleDbConnection(strConn); 49 conn.Open(); 50 DataTable sheetNames = conn.GetOleDbSchemaTable 51 (OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); 52 conn.Close(); 53 54 foreach (DataRow dr in sheetNames.Rows) 55 { 56 string sheetName = dr[2].ToString().Replace("\'", "").Replace("\'", "").Replace("$", ""); 57 names.Add(sheetName.Trim()); 58 } 59 return names; 60 } 61 62 } 63 }