c# - 是否可以使用 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);
}
解决方案
推荐阅读
- firebase - 如何解决使用firebase问题构建离子3
- react-native - react-native-tcp:verifyReleaseResources 失败
- jquery - 无法读取未定义的属性“offsetwidth”
- windows - 使命名管道仅对启动客户端进程的登录 sid 可访问
- flutter - Flutter 中的自定义仪表图
- rest - 用于内部访问的 openshift 主服务器的主机名是什么?
- python - 将文件上传到 s3 并公开并获取 url
- aws-lambda - 如何授予对一个 Lambda 函数的完全访问权限
- spring - 获取东西时如何禁用spring resttemplate重定向?
- marklogic - 如何在 Marklogic Datahub 框架中使用混淆密码