c#将读取到的Excel文件的添加到DataTable,循环遍历DataTable 将Table的数据依次写入到List<T>中。然后展示到DatAGV控件中

string FilePath = string.Empty;
public static DataTable ImportExcelToDataTable2(string path)
{

        string conStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data source={0}; Extended Properties=Excel 12.0;", path);
        using (OleDbConnection conn = new OleDbConnection(conStr))
        {
            conn.Open();
            //获取所有Sheet的相关信息
            DataTable dtSheet = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
            //获取第一个 Sheet的名称
            string sheetName = dtSheet.Rows[0]["Table_Name"].ToString();
            string sql = string.Format("select * from [{0}]", sheetName);
            using (OleDbDataAdapter oda = new OleDbDataAdapter(sql, conn))
            {
                DataTable dt = new DataTable();
                oda.Fill(dt);
                return dt;
            }
        }
    }

    private void btnDisplay_Click_1(object sender, EventArgs e)
    {
        List<M_Table> objList = new List<M_Table>();
        OpenFileDialog openFile = new OpenFileDialog();
        openFile.Filter = "所有文件(*.*)|*.*";
        if (openFile.ShowDialog() == DialogResult.OK)
        {
            FilePath = openFile.FileName;
        }
        else return;//如果没有选择或者其他  直接退出
        //调取方法将读取到的Excel的表赋值给DataTable
        DataTable dt = ImportExcelToDataTable2(FilePath);   
        //循环遍历所有的行,将值赋值给List
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            objList.Add(new M_Table
            {
                M_Name = dt.Rows[i]["厂商"].ToString(), 
                M_Warehouse = dt.Rows[i]["仓库"].ToString(),
                M_brand = dt.Rows[i]["品牌"].ToString(),
                M_Code = dt.Rows[i]["料号"].ToString(),
                M_CodeName = dt.Rows[i]["名称"].ToString(),
                M_Company = dt.Rows[i]["单位"].ToString(),
                M_quantity = dt.Rows[i]["数量"].ToString(),
                M_UnitPrice = dt.Rows[i]["单价"].ToString(),
                M_batch = dt.Rows[i]["批次"].ToString(),
                M_Number =Convert.ToInt32( dt.Rows[i]["每箱数"]),
                M_MinNumber =Convert.ToInt32( dt.Rows[i]["最小包装数"]),
            });
        }
        dgvM_Table.DataSource = null;
        dgvM_Table.AutoGenerateColumns = false;
        dgvM_Table.DataSource = objList;

    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值