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

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

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

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

Q&A

解決済

1回答

4475閲覧

NPOIで容量の大きいExcelファイルを読み取りたい

TOMO6181

総合スコア40

C#

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

0グッド

0クリップ

投稿2020/09/17 16:12

仕事でExcelファイルを読み込む処理を作成しようとしています。
下記のようなコードを作成して、Excelファイルを読み込もうとしていますが、
Excelのファイル容量が20MByteぐらいあると、WorkbookFactory.Create関数を呼び出すところでOut Of Memory
のエラーが発生してしまいます。

C#

1using NPOI.SS.UserModel; 2using System; 3using System.Collections.Generic; 4using System.Linq; 5using System.Text; 6using System.Threading.Tasks; 7 8 9namespace NPOITest 10{ 11 class Program 12 { 13 static void Main(string[] args) 14 { 15 16 IWorkbook workbook = WorkbookFactory.Create("sample.xlsx"); 17 18 ISheet sheet = workbook.GetSheetAt(0); 19 ICell cell = sheet.GetRow(0).GetCell(1); 20 Console.WriteLine(cell.StringCellValue); 21 22 workbook.Close(); 23 Console.ReadKey(); 24 } 25 } 26} 27

タスクスケジューラで見るとメモリもギガ単位で使っておりました。

仕事で使用するためEEPlusを使用することもできません。
容量の大きいExcelファイルを、できる限り少ないメモリで読む方法が分かる方がおられましたら、宜しくお願い致します。

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

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

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

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

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

TOMO6181

2020/09/26 12:10

ありがとうとございます。 ExcelDataReaderを使用するとメモリ使用量も抑えられるのですね。 試してみようと思います。
guest

回答1

0

ベストアンサー

取り急ぎとりあえず今わかっている情報では
XLSXのサポートは、NPOIではまだ新しく、まだ大きなファイルを処理できないようです。
"OutOfMemoryException" 20MBのXLSXファイルを読み取る

現在本当のそうか確認中です。

NPOIは元がJava版でそれが移植されているのですが
Java版では圧縮率等を確認しているそうです。
Java版では変更できるそうで
ZipSecureFile.setMinInflateRatio(0.001);
という指定だそうです。
C#のNPOIにこの指定ができるかは見つけることができませんでした。
申し訳ございません。

投稿2020/09/17 17:09

編集2020/09/17 17:23
kuma_kuma_

総合スコア2506

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

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

TOMO6181

2020/09/26 12:11

色々調べてくださりありがとうございます。 やっぱりNPOIでは大きなファイルを使用するのは難しいようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問