任务:在C#中创建一个Windows窗体应用程序,它将从两个包含客户端数据的不同数据库中导出两个Excel文件(大约50 MB,每行大约300k行)。
在下面的屏幕截图中,我试图直观地解释所需内容:
问题在于加载大文件! 首先,我认为我可以使用oledb执行此操作并将数据加载到数据表中并在内存中处理它们,但这需要很长时间并占用大量内存:
OleDbConnection con1 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath1 + ";Extended Properties=Excel 12.0");
OleDbDataAdapter da1 = new OleDbDataAdapter("select * from [Sheet1$]", con1);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
MessageBox.Show("filled");
如果加载1个文件需要这么多,我无法想象处理和比较行所需的时间...... 任何人都可以提出更好的方法来完成这项任务吗?
答案 0 :(得分:4)
有一种简单的方法 - 使用库EPPlus。解析和阅读速度非常快。
然后,您可以将数据转换为DataTable(.toDataTable()
)并使用内置工具进行比较。
甚至可以在DataTables中轻松生成输出文档,使用EPPLUS可以轻松将其转换为Excel。