将 Excel 范围添加到列表而不循环

本文关键字:循环 列表 Excel 范围 添加 | 更新日期: 2023-09-27 17:56:44

 xlRangeDB = xlWorkSheetDB.get_Range("A2", "BA" + lRow.ToString());
                object[,] valueArray = xlRangeDB.Value2;
                List<string> inputData = new List<string>();
                inputData.AddRange(valueArray);

我想将 Excel Range (xlRangeDB) 转换为列表。 我找不到直接的方法,所以我首先将 excel 范围转换为数组,然后尝试添加到列表中。 但它也不起作用。实际上我有 200 多个 excel 文件,每个文件包含 70000 行和 70 列。我需要从这些文件收集数据。在这种情况下循环需要花费大量时间。任何建议。谢谢

将 Excel 范围添加到列表而不循环

将它们

转换为列表将比仅使用object[,],但是如果您确实需要列表:

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

互操作 Excel 通常是读取 Excel 文件最慢的方式!您可以尝试使用 OleDb DataReader 或 Excel Data Reader 代替读取 Excel 文件的最佳方法 (.xls/.xlsx)

更新

inputData.AddRange(valueArray.Cast<object>().Select(Convert.ToString));

但是您可能会在某个时候耗尽内存,因此您应该将值保存到文件或数据库中。