可能重复:
OutofMemory 异常对象数组大小
我正在尝试将电子表格数据捕获到二维数组中。我正在使用 VSTO。
int rc = 1048576;
int cc = 1638;
string[,] arr = new string[rc, cc];
最后一行抛出内存不足异常。我想显示消息告诉用户只能捕获“X”元素。
检查 MSDN 并提到数据表的行数限制为 16,777,216。因此数据表可以保存工作表大小的数据。无法找到二维数组的限制。
我的问题不在于为什么例外。我正在寻找的是,如果您正在进行 VSTO 开发,并且必须在 DataTable 中捕获工作表以执行 In-Memory 连接等,您将需要这样做:
string[,] arr = new string[rc, cc];
Microsoft.Office.Interop.Excel.Range selection
arr = selection.Value as string[,];
然后将该数组中的数据复制到数据表中。现在,用户应该选择的元素数量的理想限制是什么。所以我可以设置行数/列数限制并在选择超过此条件时显示消息。或者是否有任何其他方法可以根据工作表中的选定范围创建数据表,考虑到第一行始终是列标题。