重複の可能性:
OutofMemory 例外オブジェクトの配列サイズ
スプレッドシート データを 2D 配列に取り込もうとしています。私はVSTOを使用しています。
int rc = 1048576;
int cc = 1638;
string[,] arr = new string[rc, cc];
最後の行で Out of Memory 例外がスローされます。「X」要素のみをキャプチャできることをユーザーに伝えるメッセージを表示したいと思います。
MSDNを確認したところ、データテーブルには16,777,216の行数制限が記載されています。したがって、データテーブルはワークシートのサイズのデータを保持できます。2D 配列の制限が見つかりません。
私の問題は例外ではありません。私が探しているのは、VSTO 開発を行っていて、インメモリ結合などを実行するために DataTable にワークシートをキャプチャする必要がある場合は、次のようにする必要があります。
string[,] arr = new string[rc, cc];
Microsoft.Office.Interop.Excel.Range selection
arr = selection.Value as string[,];
次に、その配列からデータ テーブルにデータをコピーします。ユーザーが選択する必要がある要素の数の理想的な制限はどれくらいになるでしょうか。そのため、行数/列数の制限を設定し、選択がこの基準を超えたときにメッセージを表示できます。または、最初の行が常に列ヘッダーであることを考慮して、ワークシートで選択した範囲に基づいてデータ テーブルを作成する他の方法はありますか。