首页 > 解决方案 > 是否可以使用 oledb 将大量 > 23 万条记录的 excel 数据读取并显示到数据网格中?

问题描述

我有大量excel数据的问题,需要在datagrid中显示,如果数据很小,这段代码可以工作,但对大量数据无效,需要等待很长时间。有没有解决这个问题的绝妙方法?

这段代码

        Stopwatch sw1 = Stopwatch.StartNew();
        String path = "D:\\test.xlsb";
        String sheet = "Sheet1";
        String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                        path+
                        ";Extended Properties='Excel 12.0 XML;HDR=YES;';";

        OleDbConnection con = new OleDbConnection(constr);
        OleDbCommand oconn = new OleDbCommand("Select * From [" + sheet + "$]", con);
        try
        {
            con.Open();

            OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
            DataTable data = new DataTable();
            sda.Fill(data);
            datagrid1.ItemsSource = (System.Collections.IEnumerable)data.DefaultView;
            con.Close();
            sw1.Stop(); 
            Console.WriteLine("Time taken for excel roots: {0} ms", sw1.Elapsed.TotalMilliseconds);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

标签: c#wpfdatagridoledb

解决方案


推荐阅读