質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

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

Q&A

解決済

3回答

4415閲覧

C# Excelの読み込み速度向上

yar

総合スコア16

C#

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

0グッド

0クリップ

投稿2020/06/09 08:49

C#でExcelを編集するソフトを作っています。

A1からA10000の中に任意の文字があるシートのみ摘出してそのシート名を表示するようにしているのですが10000行ほどともなるととても読み込みが遅く使っているとストレスを感じています。

そこで高速化の方法を調べExcelの自動計算機能と画面更新機能の停止を試すことでとても早くなったのですがこれ以上高速にするやり方があるのではないかと思い投稿している次第です。

ほかに高速に読み込む方法などありますでしょうか?

C#のFormApplicationでMicrosoft.Office.Interop.Excelを使用しています。

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

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

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

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

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

Zuishin

2020/06/09 09:23

Excel の代わりにデータベース、もしくは Excel と併用してデータベースを使うと速く処理できると思います。
guest

回答3

0

異なったアプローチとして、読込み時のデータ(ファイル名や更新日時)を記録しておき、変更がなかったら前回のデータを使う、という方法があります。

ある種のデータキャッシュです。
ただし、その場合、別の場所にデータを保存/更新する必要があるので、プログラムの手間は、かなり増えます。

投稿2020/06/09 10:30

YT0014

総合スコア1708

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

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

0

ベストアンサー

読むだけで良いなら私の知る限り
ExcelDataReader
が最速です。
GUIのNuGetで[参照]画面にて ExcelDataReader を検索すれば出てきます。
詳しい使い方はググってください。

投稿2020/06/09 09:19

hihijiji

総合スコア4150

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

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

yar

2020/06/09 09:28

Excel側に何かしらの編集する機能も追加しようと思っているのですがExcelDataReaderは対応していますか?
hihijiji

2020/06/09 09:54

ExcelDataReaderは読むことしかできません。 ストレージ次第ですが、私の環境で4000ブック-10000シートの全体読み込みに10秒程度です。 ブックは読んだら閉じて、編集が必要なブックをEPPlusで開きなおして書き換えてます。
yar

2020/06/09 10:21

読み取りだけならExcelDataReaderを使うのがよさそうですね。ありがとうございました。
guest

0

EPPlus か ClosedXML を使ってみてください。
Excel Interopよりは高速な筈です。

投稿2020/06/09 09:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yar

2020/06/09 09:36

Interopを使用しての高速化は厳しいのでしょうか?
退会済みユーザー

退会済みユーザー

2020/06/09 09:53

Excelのプロセスを外部から操作するような感じなので、直接読み書き出来るライブラリよりはどうしても遅いです
yar

2020/06/09 10:21

なるほど...厳しいんですね...ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問