🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2946閲覧

C#でExcelを配列へ格納したい。

megureime6

総合スコア0

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2021/02/02 02:10

編集2021/02/02 02:28

前提・実現したいこと

エクセルのデータを複数読み込み、それぞれの比較によって問題がないかチェックする機構を作成しています。LinqtoExcelを使用して、Excelを読み込み、無理やり配列へ格納しています。

比較するために、Excelを配列に格納して扱っているのですがデータ処理が膨大になってしまっているのか、ソースコードの
foreach (var p in worksheet) intermediate_list.Add(p.ID);
の箇所で、動作が終了しなくなります。

処理が多すぎるのかと思い、間に文字を出力させるなど試してみましたが
foreach (var p in worksheet) {
Console.WriteLine("test");
intermediate_list.Add(p.ID);
}
のような形にした場合に、testすら出力されず動作しなくなります。

試行錯誤すると、ふと動いたりするのですが
次の日になると、同じように動作しなくなります。

コードに原因があるのか、パソコン自体?に問題があるのか
おわかりでしたら、教えていただけると幸いです。

Excelを配列へ格納する方法が別途ありましたら、教えていただけるとありがたいです。

ロードするための関数は、これを含め15個程度あります。
読み込みたいExcel1列ごとに作成しています。

該当のソースコード

C#

1 public static int[] Load_ID(string pass) 2 { 3 4 List<int> intermediate_list = new List<int>(); 5 //Excelの読み込み LinqtoExcelを利用 6 7 var excel = new ExcelQueryFactory(pass); 8 excel.ReadOnly = true; 9 var worksheet = excel.Worksheet<ID>("Sheet1"); 10 11 foreach (var p in worksheet) intermediate_list.Add(p.ID); 12 13 return intermediate_list.ToArray(); 14 } 15 16public class ID 17 { 18 [ExcelColumn("ID")] public int ID { get; set; } 19 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/02/02 02:44

https://github.com/paulyoder/LinqToExcel のことであるなら、内部で Access Database Engine を使っているようなので、foreach ですぐに列挙されるとは限りません。単に読み込みに時間がかかっているだけの可能性もあります。しかしそれが許容できるレベルにはないようなので、これを使うのをやめて別の方法で読み込むのが良いと思います。
megureime6

2021/02/02 03:32

URLのものを使用しています。 別のものを検討してみます。
guest

回答1

0

自己解決

サーバに保存されたExcelを読みにいっていたことで、処理がとてつもなく長くなっていました。
ローカルに保存後、処理を行うことで許容できる速さになりました。

サーバ上でも、かなり遅いだけで処理自体は数時間(ローカルなら1分)かければ終わりました。

投稿2021/03/12 01:00

megureime6

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問