https://www.cnblogs.com/lhxhappy/archive/2008/11/26/1341873.html

/// <summary>

        /// 点击按钮导入数据

        /// 作者:lhxhappy

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void button1_Click(object sender, EventArgs e)

        {

            //打开一个文件选择框

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title = "Excel文件";

            ofd.FileName = "";

            ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);//为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录

            ofd.Filter = "Excel文件(*.xls)|*.xls";

            ofd.ValidateNames = true;     //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名

            ofd.CheckFileExists = true;  //验证路径有效性

            ofd.CheckPathExists = true; //验证文件有效性

            string strName = string.Empty;

            if (ofd.ShowDialog() == DialogResult.OK)

            {

                strName = ofd.FileName;

            }

            if (strName == "")

            {

                MessageBox.Show("没有选择Excel文件!无法进行数据导入");

                return;

            }

            //调用导入数据方法

            EcxelToDataGridView(strName, this.hpGridView1);

        }

Excel数据导入方法

/// <summary>

        /// Excel数据导入方法

        /// 作者:lhxhappy

        /// </summary>

        /// <param name="filePath"></param>

        /// <param name="dgv"></param>

        public void EcxelToDataGridView(string filePath,DataGridView dgv)

        {

            //根据路径打开一个Excel文件并将数据填充到DataSet中

            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入

            OleDbConnection conn = new OleDbConnection(strConn);

            conn.Open();

            string strExcel = "";

            OleDbDataAdapter myCommand = null;

            DataSet ds = null;

            strExcel = "select  * from   [sheet1$]";

            myCommand = new OleDbDataAdapter(strExcel, strConn);

            ds = new DataSet();

            myCommand.Fill(ds, "table1");

            //根据DataGridView的列构造一个新的DataTable

            DataTable tb = new DataTable();

            foreach (DataGridViewColumn dgvc in dgv.Columns)

            {

                if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))

                {

                    DataColumn dc = new DataColumn();

                    dc.ColumnName = dgvc.DataPropertyName;

                    //dc.DataType = dgvc.ValueType;//若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable

                    tb.Columns.Add(dc);

                }

            }

            //根据Excel的行逐一对上面构造的DataTable的列进行赋值

            foreach (DataRow excelRow in ds.Tables[].Rows)

            {

                int i = ;

                DataRow dr = tb.NewRow();

                foreach (DataColumn dc in tb.Columns)

                {

                    dr[dc] = excelRow[i];

                    i++;

                }

                tb.Rows.Add(dr);

            }

            //在DataGridView中显示导入的数据

            dgv.DataSource = tb;

        }

最新文章

  1. ABP理论学习之异常处理
  2. Predicate&lt;T&gt;与Func&lt;T, bool&gt;泛型委托
  3. fdisk -c 0 350 1000 300命令
  4. 孙鑫MFC学习笔记8:对话框编程(下)
  5. Android Studio 入门指南
  6. gson 自定义对象转换格式
  7. web pack的使用事项
  8. kettle JavaScript脚本
  9. 64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法
  10. 快速替换图片的组合-AE-样片!
  11. 区块链Readme.md
  12. MATLAB下跑Faster-RCNN+ZF实验时如何编译自己需要的external文件
  13. 记一次monolog的RotatingFileHandler使用
  14. Android开发 - 掌握ConstraintLayout(六)链条(Chains)
  15. Maven使用(一)—— Maven的安装与全局配置
  16. 上传本地代码到github&amp;&amp;从github下载源码
  17. django ----CBV中加装饰器
  18. git 删除远程分支文件夹
  19. HDU1166
  20. 第三百八十六节,Django+Xadmin打造上线标准的在线教育平台—HTML母版继承

热门文章

  1. 如何在NAS上安装Git Server
  2. 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析
  3. Android 开发服务类 02_NewsListServlet
  4. C#中通过Lambda表达式为委托传入更多的参数
  5. ROR中h()方法和sanitize的区别及Html Filter
  6. unity编辑器之自动提示订外卖
  7. 求两个Linux文本文件的交集、差集、并集
  8. Android 控件:使用下拉列表框--Spinner
  9. c#与IronPython Clojure-clr的调用
  10. SpringBoot+thymelates入门