处理两个大的Excel文件
任务:在C#中创build一个Windows Forms应用程序,该应用程序将从两个包含有关客户端的数据的不同数据库中导出两个Excel文件(每个大约50行,约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个文件,我不能想象需要多长时间来处理和比较行…任何人都可以build议一个更好的方法来完成这项任务?
有一个简单的方法 – 使用图书馆EPPlus 。 它parsing和阅读是相当快的。
然后,您可以将数据转换为DataTable( .toDataTable()
),并使用内置工具进行比较。
即使您的输出文档可以很容易地在DataTables中生成,可以使用EPPLUS轻松转换为Excel。