【无标题】

C#Winform导入Excel数据到datagridview控件

#此次导入Excel数据借助了ExcelDataReader插件。(由于我需要的是打开工作簿时能够选择工作表绑定于datagridview控件,通过网上资源的浏览与借鉴,ExcelDataReader能满足我的需求。)

一、插件安装

(1)安装ExcelDataReader插件(如图)
【无标题】
(2)查看是否安装成功(如图表明已安装成功)
【无标题】

二、代码编写

(1)为了方便使用,打开文件的过程构造为一个方法

		DataTableCollection tableCollection;
        public void OpenFile()
        {
            OpenFileDialog file = new OpenFileDialog();
            file.Filter = "Excel(*.xlsx)|*.xlsx|Excel(*.xls)|*.xls";
            if (file.ShowDialog() == DialogResult.OK)
            {
                txtFileName.Text = file.FileName;//对话框中选择的文件名
                //1:打开文件,得到文件流stream 
                FileStream stream = File.Open(file.FileName, FileMode.Open, FileAccess.Read);//FileStream:用于文件中任何位置的读写。
                var sw = new Stopwatch();//定时器
                sw.Start();
                //2:得到文件reader
                var reader = ExcelReaderFactory.CreateReader(stream);
                //3:通过reader得到数据
                var result = reader.AsDataSet(new ExcelDataSetConfiguration()
                {
                    ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
                    {
                        //标题行的内容是否显示
                        UseHeaderRow = true
                    }
                });
                var openTiming = sw.ElapsedMilliseconds;
                toolStripStatusLabel1.Text = "Elapsed: " + sw.ElapsedMilliseconds.ToString() + " ms (" + openTiming.ToString() + " ms to open)";
                //4:得到ExcelFile文件的表Sheet
                tableCollection = result.Tables;
                cboSheet.Items.Clear();
                foreach (DataTable item in tableCollection)
                {
                    cboSheet.Items.Add(item.TableName);
                    Console.WriteLine(item.TableName);
                }
                
            }
        }

(2)效果展示(图上为控件name)
【无标题】
(3)数据绑定方法

	 	public static void BindDataGridView(DataTable dt, DataGridView dgv)
 		{

            /*dgv.ClearSelection();
            //不像用户显示添加行
            dgv.AllowUserToAddRows = false;
            dgv.DataSource = null;*/
            //DataTable存储数据
           	dgv.DataSource = dt;

        }

(4)选择工作表,绑定相应数据

 		private void dgv_CellContentClick()
        {

            //datagridview组件的颜色
            dgvData.RowsDefaultCellStyle.BackColor = Color.White;
            Console.WriteLine(cboSheet.SelectedItem.ToString());
            var dt = tableCollection[cboSheet.SelectedItem.ToString()];

            BindDataGridViewFillShow(dt, dgvData);
            dgvData.DataSource = dt;
            // DataGridView取消选中第一行第一列方法(绑定数据源后)
            dgvData.Rows[0].Cells[0].Selected = false;
            dgvData.Rows[0].Selected = false;
        }

(5)在相应控件调用方法即可

		private void btnFilenpath_Click(object sender, EventArgs e)
        {
            OpenFile();
        }

        private void cboSheet_SelectedIndexChanged(object sender, EventArgs e)
        {
            dgv_CellContentClick();
        }

这就完成将Excel数据导入到Excel的过程啦!

这是通过自己需求从网络上学习、借鉴从而实现的,给有需要的朋友参考参考。如有侵权,请务必联系我删除,谢谢!
也希望能给大家有所帮助!!!

上一篇:深入浅出JWT(JSON Web Token )


下一篇:PAT Basic Level 1032 挖掘机技术哪家强