C# 使用 OleDbConnection 连接读取Excel的方法

  class Program

  {

  //函数用来读取一个excel文件到DataSet集中

  public static DataSet ExcelToDataSet(string filename, string tableName)

  {

  //获取文件扩展名

  string strExtension = System.IO.Path.GetExtension(filename);

  OleDbConnection myConn = null;

  switch (strExtension)

  {

  case ".xls":

  myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";" + "Extended Properties="Excel 8.0;HDR=yes;IMEX=1;"");

  break;

  case ".xlsx":

  myConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filename + ";" + "Extended Properties="Excel 12.0;HDR=yes;IMEX=1;"");

  //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)

  //"HDR=yes;"是说Excel文件的第一行是列名而不是数,"HDR=No;"正好与前面的相反。"IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。

  break;

  default:

  myConn = null;

  break;

  }

  if (myConn == null)

  {

  return null;

  }

  string strCom = " SELECT * FROM ["+ tableName + "$]";

  myConn.Open();

  //获取Excel指定Sheet表中的信息

  OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);

  DataSet ds;

  ds = new DataSet();

  myCommand.Fill(ds, tableName);

  myConn.Close();

  return ds;

  }

  static void Main(string[] args)

  {

  var tablename = "sheet1";

  //括号中为表格地址

  DataSet ds = ExcelToDataSet("D:get.xls", tablename);

  for (int i = 0; i < ds.Tables[0].Rows.Count; i++)

  {

  string str = ds.Tables[tablename].Rows[i]["价格"].ToString(); //Rows[i]["col1"]表示i行"col1"字段

  Console.WriteLine(str);

  }

  Console.WriteLine("正确执行...");

  Console.ReadKey();

  }

  }