using System.Data.OleDb;
private void btnUpload_Click(object sender, EventArgs e)
{
DataTable dt = ReadExcelToTable();
this.dataGridView1.DataSource = dt;
//数据都有了,就可以for循环写到数据库里去了,不再赘述...
}
//读取EXCEL文件内容
public static DataTable ReadExcelToTable()
{
try
{
System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();//文件选择器
if (fd.ShowDialog() == DialogResult.OK)
{
//连接字符串
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fd.FileName + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';"; // Office 07及以上版本 *.xlsx 不能出现多余的空格 而且分号注意
//string strConn = Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + fd.FileName + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';"; //Office 07以下版本 *.xls
//HDR=YES 就代表第一行是[表头]标题。HDR=NO 代表excel的内容全部都是数据
using (OleDbConnection conn = new OleDbConnection(strConn))//自动Close
{
conn.Open();
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //得到所有sheet的名字
string firstSheetName = sheetsName.Rows[0][2].ToString(); //得到第一个sheet的名字
string sql = string.Format("SELECT * FROM [{0}]", firstSheetName); //查询字符串
OleDbDataAdapter ada = new OleDbDataAdapter(sql, strConn);//读取excel数据,第一行是表头
DataSet set = new DataSet();
ada.Fill(set);//填充数据集
DataTable dt = set.Tables[0];//数据集的第一个表就是Excel数据
return dt;
}
}
else
{
return null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
C#WinFrom读取Excel文件到DataTable
最新推荐文章于 2024-07-18 11:45:17 发布