C#winform导入excel分享

首先在页面上加入一个BUT按钮,和一个dataGridView。
but呢是用来触发此事件,datagriview是用来显示你所导入的Excel做显示的。
现在进入操作

   private void button1_Click(object sender, EventArgs e)
        {
            OpentExcel();
        }

便于大家查看我把方法尽量封装分开

  private DataTable dtExcelItems;
  private void OpentExcel()
        {
         
            try
            {
            //选择导入文件
                OpenFileDialog FBD = new OpenFileDialog();
                FBD.Title = "选择待导入文件";
                FBD.FileName = "";
                if (FBD.ShowDialog() == DialogResult.OK)
                {
                    if (!String.IsNullOrEmpty(FBD.FileName))
                    {
                       //调用ExcelHelper类
                        dtExcelItems = ExcelHelper.OpenExcel(FBD.FileName, true);

                        if (dtExcelItems == null)
                        {
                            MessageBox.Show("打开EXCEL失败,请重试");
                            return;
                        }
                        dataGridView1.DataSource = dtExcelItems;}
                    else
                    {
                        MessageBox.Show("未选择文件。");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("选择文件时发生错误," + ex.ToString());
            }
        }

ExcelHelper类

  public class ExcelHelper
    {
        public static DataTable OpenExcel(string FileName, bool FirstColName)
        {
            DataTable dt = null;

            DataSet myDataSet = new DataSet();
            string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=No;IMEX=1;'", FileName);   //No表示第一第就是数据, 为了让所有列都是字符

            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();

            DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
            string tableName = schemaTable.Rows[0][2].ToString().Trim();

            OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [" + tableName + "]", strConn);

            myCommand.Fill(myDataSet);
            dt = myDataSet.Tables[0];
            
            //手动将第一行作为列名,并去掉第一行
            if (FirstColName && dt.Rows.Count > 0)
            {
                DataRow dr = dt.Rows[0];
                string ColName;
                for (int col = 0; col < dt.Columns.Count; col++)
                {
                    ColName = dr[col].ToString();
                    ColName = ColName.Trim();

                    if (ColName == "")
                    {
                        ColName = "C" + col;
                    }

                    dt.Columns[col].ColumnName = ColName;
                }
                dt.Rows[0].Delete();
                dt.AcceptChanges();
            }

            return dt;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值