関です。
ある程度原因が分かってきましたので、ここまでで一度お伝えします。
どうも、Excelテンプレートファイルのシート名やその順番によっては破損することがあるようです。
例えば、テンプレートファイルの中に「Digest」「Deferred」「Received」という3つのシートがあり、
そのうちDigestだけを出力しようとします。
ReportSheet reportSheet = new ReportSheet("Digest");
reportBook.addReportSheet(reportSheet);
その際、Excelのシートの順番によっては破損したファイルが出力されてしまいました。
以下、そのパターンの例です。
・Digest/Deferred/Receivedの順 ⇒ NG(破損)
・Received/Digest/Deferredの順 ⇒ NG(破損)
・Deferred/Received/Digestの順 ⇒ OK
推測なのですが、ReportProcessorクラス等のソースを見ますと、ArrayListやHashSetなどでシート名を保持して、
出力対象のチェックなどを行っているように見受けられます。
それらのうち、どこかでシートの順番に影響する箇所があるのかもしれません。
今のところ調べられたのはここまでですが、上記の内容について確認していただけないでしょうか?
【補足】
・Sheet1,Sheet2,Sheet3など、シンプルなシート名ならば、どの順番でシートが並んでいても大丈夫なようでした。
・出力しなかったシートに名前が含まれていますと、Excelファイルの作成はできるのですがファイルを開いた時に
「1 つ以上の無効な名前が削除されました。」とエラーが表示されます。これはおそらく回避できないと思います。
ただ、印刷範囲やタイトルなどを設定するとPrint_Areaなどの名前が自動で定義されるので、結局のところ印刷範囲等の
設定が必要な帳票についてはテンプレートファイルを分けることになりそうです。
以上、宜しくお願い致します。