Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Excel范围添加到列表而不循环 xlRangeDB=xlWorkSheetDB.get_Range(“A2”,“BA”+lRow.ToString()); 对象[,]valueArray=xlRangeDB.Value2; 列表输入数据=新列表(); inputData.AddRange(valueArray);_C# - Fatal编程技术网

C# 将Excel范围添加到列表而不循环 xlRangeDB=xlWorkSheetDB.get_Range(“A2”,“BA”+lRow.ToString()); 对象[,]valueArray=xlRangeDB.Value2; 列表输入数据=新列表(); inputData.AddRange(valueArray);

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());

我想转换和Excel范围(xlRangeDB)到列表。我找不到直接的方法,所以我首先将excel范围转换为数组,然后尝试添加到列表中。但它也不起作用。
实际上我有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));