试过网上大部分方法,都有错误,于是自己摸索了一下:Csharp 代码如下


public static DataSet GetExcelData(string str)
{
string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + str + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [Sheet1$]";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet, "[Sheet1$]");
myConn.Close();
return myDataSet;
}

private void ReadExcelMenu_Click(object sender, EventArgs e)
{
OpenFileDialog filedialog = new OpenFileDialog();
string FileName = "";

if (filedialog.ShowDialog() == DialogResult.OK)
{
FileName = filedialog.FileName;

dGViewExcel.DataSource = GetExcelData(FileName);
dGViewExcel.DataMember = "[Sheet1$]";

for (int count = 0; (count <= (dGViewExcel.Rows.Count - 1)); count++)
{

dGViewExcel.Rows[count].HeaderCell.Value = (count + 1).ToString();

}
}
}


需要说明的是,无论是2003版的xls 还是2007 的xlsx,都是可以的,本文使用2007 的excel连接字符串,其向下兼容,故而不用分格式。