前提条件:f:\test.xlsx中sheet1的第一行的第1列和第2列依次写了1,2
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
namespace excelTest
{
class Program
{
public DataTable LoadDataFromExcel(string Path)
{
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Path + ";Extended Properties='Excel 12.0; HDR=YES; IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataTable dt = null;
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字
string firstSheetName = sheetsName.Rows[0][2].ToString(); //得到第一个sheet的名字
//sheetsName对应所有表的名字,其中
//Rows[0][2]对应第1个表的名字,
//Rows[1][2]对应第2个表的名字,
//Rows[2][2]对应第3个表的名字,
string sheet1 = sheetsName.Rows[0][2].ToString(); //得到第一个sheet的名字
string sheet2 = sheetsName.Rows[1][2].ToString(); //得到第一个sheet的名字
string sheet3 = sheetsName.Rows[2][2].ToString(); //得到第一个sheet的名字
Console.WriteLine("{0} {1} {2}",sheet1,sheet2,sheet3);
string sql = string.Format("SELECT * FROM [{0}]", firstSheetName);
//strExcel = "select * from [sheet1$]";
//myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand = new OleDbDataAdapter(sql, strConn);
dt = new DataTable();
myCommand.Fill(dt);
return dt;
}
static void Main(string[] args)
{
Program p = new Program();
DataTable dt = p.LoadDataFromExcel("f:\\test.xlsx");
Console.WriteLine(dt.Rows[0][0].ToString() +" " + dt.Rows[0][1].ToString());
}
}
}