将Excel范围添加到列表中,无需循环

9 浏览
0 Comments

将Excel范围添加到列表中,无需循环

我想将Excel范围(xlRangeDB)转换为列表。我找不到直接的方法,所以首先将Excel范围转换为数组,然后尝试添加到列表中。但这也不起作用。

实际上,我有200多个Excel文件,每个文件包含70000行和70列。我需要从这些文件中收集数据。在这种情况下循环将花费大量时间。请给予建议。谢谢。

0
0 Comments

问题出现的原因是Excel文件的数据需要转换成List,但是转换会比直接使用object[,]慢。解决方法是使用以下代码将Excel范围添加到List中,或者使用剪贴板将Excel范围复制为TSV格式,然后将其拆分为List。

var inputData = valueArray.Cast().Select(Convert.ToString).ToList();

或者

xlRangeDB.Copy();
var inputData = System.Windows.Forms.Clipboard.GetText().Split('\n', '\r', '\t').ToList();

同时提到,Interop Excel通常是读取Excel文件最慢的方式。可以尝试使用OleDb DataReader或Excel Data Reader来代替。

在更新部分,提到了使用`AddRange`方法将数据添加到List中,但是可能会在某个时间点耗尽内存,所以应该将值保存到文件或数据库中。

最后,提到了不知道能否使用Object[,]来调整数组大小并添加数据的问题,以及如何在多个工作簿上循环并保持数据。

0