C# 将Excel范围添加到列表而不循环 xlRangeDB=xlWorkSheetDB.get_Range(“A2”,“BA”+lRow.ToString()); 对象[,]valueArray=xlRangeDB.Value2; 列表输入数据=新列表(); inputData.AddRange(valueArray);
我想转换和Excel范围(xlRangeDB)到列表。我找不到直接的方法,所以我首先将excel范围转换为数组,然后尝试添加到列表中。但它也不起作用。C# 将Excel范围添加到列表而不循环 xlRangeDB=xlWorkSheetDB.get_Range(“A2”,“BA”+lRow.ToString()); 对象[,]valueArray=xlRangeDB.Value2; 列表输入数据=新列表(); inputData.AddRange(valueArray);,c#,C#,我想转换和Excel范围(xlRangeDB)到列表。我找不到直接的方法,所以我首先将excel范围转换为数组,然后尝试添加到列表中。但它也不起作用。 实际上我有200多个excel文件,每个文件包含70000行和70列。我需要从这些文件中收集数据。在这种情况下循环将花费大量时间。任何建议。谢谢将它们转换为列表将比仅使用对象[,]慢,但是 如果您确实需要列表: xlRangeDB = xlWorkSheetDB.get_Range("A2", "BA" + lRow.ToString());
实际上我有200多个excel文件,每个文件包含70000行和70列。我需要从这些文件中收集数据。在这种情况下循环将花费大量时间。任何建议。谢谢将它们转换为列表将比仅使用
对象[,]
慢,但是
如果您确实需要列表:
xlRangeDB = xlWorkSheetDB.get_Range("A2", "BA" + lRow.ToString());
object[,] valueArray = xlRangeDB.Value2;
List<string> inputData = new List<string>();
inputData.AddRange(valueArray);
Interop Excel通常是读取Excel文件最慢的方法!您可以尝试使用OleDb数据读取器或Excel数据读取器
更新
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();
inputData.AddRange(valueArray.Cast().Select(Convert.ToString));
但您可能会在某个时候耗尽内存,因此您应该将这些值保存到文件或数据库中。提取数据后,您将把这些数据放在哪里?我将对数据进行切片,然后根据它们的条件将其放回不同的报表excel文件。如果可能的话,您肯定希望查看流式处理,最终,您可能会在内存中存储所有70000个文本行,从而获得非常高的内存使用率。但这就是你的判断。你是指OleDb数据阅读器还是Excel数据阅读器?我的意思是,当你从Excel电子表格中读取一个项目时,对其进行处理,然后将其存储回Excel电子表格。如果可能的话,按每项进行。这样你就不会试图填满你的记忆了很多谢谢,实际上我不知道能容纳200个excel文件数据的数组大小。使用Object[,]调整数组大小并将数据添加到数组中200次会起作用,我不知道。所有Excel文件均为(.xlsb)格式。请给出建议。这工作非常完美,但我如何通过循环许多工作簿来保存数据并添加更多数据呢。
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();
inputData.AddRange(valueArray.Cast<object>().Select(Convert.ToString));