xlRangeDB = xlWorkSheetDB.get_Range("A2", "BA" + lRow.ToString());
object[,] valueArray = xlRangeDB.Value2;
List<string> inputData = new List<string>();
inputData.AddRange(valueArray);
我想将Excel Range(xlRangeDB)转换为List。我无法找到直接的方法,因此我首先将excel范围转换为Array,然后尝试添加到List中。但它也不起作用。 实际上我有200多个excel文件,每个文件包含70000行和70列。我需要从这些文件中收集数据。在这种情况下循环将花费大量时间。任何建议。感谢
答案 0 :(得分:0)
将它们转换为List将比仅使用object[,]
更慢,但是
如果你真的需要一个List:
var inputData = valueArray.Cast<object>().Select(Convert.ToString).ToList();
或
xlRangeDB.Copy(); // copies to the clipboard as TSV - rows separated by "\r\n" and cells separated by '\t'
var inputData = System.Windows.Forms.Clipboard.GetText().Split('\n', '\r', '\t').ToList();
Interop Excel通常是最慢方式来读取Excel文件!您可以尝试使用OleDb DataReader或Excel Data Reader代替Optimal way to Read an Excel file (.xls/.xlsx)
<强>更新强>
inputData.AddRange(valueArray.Cast<object>().Select(Convert.ToString));
但是你可能会在某些时候耗尽内存,所以你应该将值保存到文件或数据库中。