VisualBasicからExcel(xlsx)出力でSystem.OutOfMemoryException発生

152 views
Skip to first unread message

takeshi...@kantonoki.com

unread,
Nov 26, 2021, 4:04:56 AM11/26/21
to RapidReportサポート QAフォーラム
最小限のコードを利用しxlsxに出力しています。
今まで問題なく動作していたのですが、今回、System.OutOfMemoryExceptionが発生してしまいました。PCを再起動しても再現します。

本プログラムの中ではXLSXに出力可能な他、PDF出力やプレビューが可能になっていますが、PDF出力やプレビューでは問題なく正常に動作しています。XLSX出力だけで問題が発生しています。

お手数ですが、対処方法を教えてください。

環境は
OS Windwows 10 Pro x64 1903
実装RAM 32GB
開発環境 VS 2019
言語 Visual Basic
.NET Framework 4.6

です。

RapidReport

unread,
Nov 28, 2021, 8:47:09 PM11/28/21
to RapidReportサポート QAフォーラム
吉川です。

恐らく、1つのファイルに書き出そうとしているデータ件数が、
多いために発生している問題だと思われます。
「データ件数の削減」や「出力するエクセルファイルを分ける」で対処して頂けますでしょうか。

takeshi...@kantonoki.com

unread,
Nov 28, 2021, 9:54:17 PM11/28/21
to RapidReportサポート QAフォーラム
先程、VSのデバッグ環境で実行してみたところ、正常に動作し、13MBのXLSXが作成されました。
XLSXの行数としては37,725行でした。この行数が多いということでしょうか。それともファイルサイズが大きいということでしょうか。

以上

2021年11月29日月曜日 10:47:09 UTC+9 RapidReport:

RapidReport

unread,
Nov 28, 2021, 11:45:06 PM11/28/21
to RapidReportサポート QAフォーラム
吉川です。

XLSXの行数が多い、ということです。
(本来伝えたかったのは、”DBなどから取得する「データ件数」が多い”、ということですが)

エクセルの行数および列数(つまり帳票定義のデザイン)や、実行環境によって
例外が発生する件数は変わります。
例えば、先ほど弊社開発環境で
・1列のみの帳票定義
・5万行
でエクセル出力したとしても、例外は発生しませんでした。
従って、一概に「何行以内にして下さい」とはお伝えすることができません。大変申し訳ありません。

他に、出力したエクセルの「セル」が、細切れに出力されないようにデザインする
ことも効果があるかもしれません。
例えば、
帳票定義にて、要素の高さや幅を揃えてデザインすることで、
エクセル出力時、結果として列数や行数を抑えることになります。
こちらも試して頂けますでしょうか。よろしくお願い致します。

Reply all
Reply to author
Forward
0 new messages