C# WPF读取Excel数据并把数据绑定到DataGrid中

时间:2022-06-12 15:05:47

新建一个WPF项目:

建立好了打开MainWindow.cs页面

首先读取Excel数据,如下所示:  

public DataTable GetData(string Path)     //写一个方法
 {
        string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 12.0;";      //连接语句,读取文件路劲
        string strExcel = "select * from [Sheet1$]";                                  //查询Excel表名,默认是Sheet1
        OleDbConnection ole = new OleDbConnection(strConn);      
        ole.Open();                                                                                          //打开连接
         DataTable schemaTable = new DataTable();                             
         OleDbDataAdapter odp = new OleDbDataAdapter(strExcel, strConn);      
         odp.Fill(schemaTable);
         ole.Close();
         return schemaTable;
  }

然后在Loaded事件里面调用上面的方法,如下:

List<string> list = new List<string>();

void MainWindow_Loaded(object sender, RoutedEventArgs e)
  {
        DataTable dt = GetData("E:\\test.xls");                         //调用GetData方发写上Excel文件所在的路径,这样就能获取到Excel表里面的数据了

        然后我们用个集合把读取到数据添加进去

        for(int i = 0;i<dt.Rows.Count;i++)        
        {
            list.Add(dt.Rows[i][3].ToString());     //这里就把读取的数据添加到集合了

         }

    }

下面调试看下,如下图:

C# WPF读取Excel数据并把数据绑定到DataGrid中

上面已经知道如何读取Excel表的数据了并也知道如何把Excel数据添加到集合里面了

下面再来把Excel数据绑定到DataGrid中,如下:

首先我们新建一个类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 读取Execl表
{
    class Users
    {
        public int id { get; set; }          //用户id
        public string name { get; set; }  //用户姓名
        public string sex { get; set; }   //性别
        public int age { get; set; }        //年龄
        public string address { get; set; }     //地址
    }
}

下面同样是在Loaded事件里面写上绑定代码,如下所示:

      void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            DataTable dt = GetData("E:\\test.xls");
            if (dt.Rows.Count > 0)
            {
                List<Users> lists = new List<Users>();      
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Users u = new Users();
                    u.id = Convert.ToInt32(dt.Rows[i][0]);       
                    u.age = Convert.ToInt32(dt.Rows[i][1]);    
                    u.name = dt.Rows[i][3].ToString();             
                    u.sex = dt.Rows[i][2].ToString();                  
                    u.address = dt.Rows[i][4].ToString();        
                    lists.Add(u);
                }
                datagrid.ItemsSource = lists;
            }

        }

下面是效果图:

C# WPF读取Excel数据并把数据绑定到DataGrid中

差不多就是这样了,如果有什么不对的地方忘各位前辈指教。