C#读取Excel表格数据显示到GridView控件

这篇博客分享了使用C#编程学习的过程,重点在于如何通过NPOI库读取Excel文件,并将数据绑定到Windows窗体应用的GridView组件进行展示。首先定义了一个Student数据模型类,然后通过OpenFileDialog选择Excel文件,使用反射获取类的公共属性,遍历Excel数据并填充到Student对象列表,最后将数据绑定到GridView,实现了数据的展示。
摘要由CSDN通过智能技术生成

实现思路

最近在学习C#的编程,想分享一下自己的学习过程,本方法显示数据的办法比较固定,需要定义一个数据模型类,再C#的窗体应用中,使用一个button按钮和GridView组件,引用NPOI读取Excel数据,使用反射GetProperies绑定student类的public属性,通过遍历添加到dataRows列表,再把dataRows的数据绑定到GridView进行展示。请大家参考,欢迎指定批评。

确定导入的数据

在这里插入图片描述

建立数据模型

    class Student
    {
        public string 学号 { set; get; }
        public string 班级 { set; get; }
        public string 姓名 { set; get; }
        public string 性别 { set; get; }
        public string 身份 { set; get; }

    }

代码实现

 private void excelBtn_Click(object sender, EventArgs e)
        {
            var dig = new OpenFileDialog()
            {
                Title = "请选择要导入的文件",
                Filter = "Excel Files|*.xlsx;*.xls",
                Multiselect = false//是否可以多选文件

            };
            //选择文件时取消
            if (dig.ShowDialog()!=DialogResult.OK) {
                return;
            }
            var inputFilename = dig.FileName;
            //返回指定的路径字符串的扩展名,Extension扩展
            var ext = Path.GetExtension(inputFilename);
           // MessageBox.Show("ext:"+ext);
           //定义工作簿
            IWorkbook workbook;
            //使用文件流,FileMode .Open打开现有文件
            using (var stream = new FileStream(inputFilename, FileMode
                .Open))
            {
                //扩展名判断
                if (".xlsx".Equals(ext, StringComparison.OrdinalIgnoreCase))
                {
                    //打开.xlsx文件
                    workbook = new XSSFWorkbook(stream);
                }
                else
                {
                    //打开.xls文件
                       workbook = new HSSFWorkbook(stream);
                }
                //获取第一个表
                var sheet= workbook.GetSheetAt(0);
                //定义行号,从第二行开始读
                int rowindex = 1;
                //反射,获取student类的公共属性
                var properties = typeof(Student).GetProperties(BindingFlags.Instance | BindingFlags.Public);
                //定义一个泛型student列表
                var dataRows = new List<Student>();
                while (true) {
                    //获取行
                    var row = sheet.GetRow(rowindex);
                    if (row == null) {
                        break;
                    }
                    //实例对象
                    var rowData = new Student();
                    //定义列
                    int columIndex = 0;
                    foreach (var property  in properties)
                    {
                        //遍历反射对象的属性,比如学号,班级,姓名
                        var cell = row.GetCell(columIndex);
                        property.SetValue(rowData, cell.ToString(), null);
                        columIndex++;
                    }
                    //添加到列表保存
                    dataRows.Add(rowData);
                    rowindex++;
                }
                //添加到GridView显示
                dataGridView1.AutoGenerateColumns = true;
                dataGridView1.DataSource = dataRows;
            }
            

            
        }

最后效果:
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值