NPOIの最新化について

1,124 views
Skip to first unread message

Yamaguchi

unread,
Jun 21, 2022, 7:56:34 PM6/21/22
to RapidReportサポート QAフォーラム
お世話になっております。
RapidReportに同梱されているNPOIは、2.1.3.1となっていますが、
このバージョンのNPOIを使用してxlsxを操作した場合に
正常に動作しないことがあります。

ちなみに最新バージョン(2.5.6)では、正常に動作しています。

RapidReportに同梱されているNPOIは、独自の変更が加えられていますが、
最新バージョンに変更していただけないでしょうか?
あるいは、同梱されているNPOIのdll名、namespaceを変更していただく
のでも構いません。

ご検討よろしくお願いいたします。

RapidReport

unread,
Jun 21, 2022, 10:26:56 PM6/21/22
to RapidReportサポート QAフォーラム
NPOIの最新版について調査しますので、少々時間を下さい。

また、NPOI2.1.3.1を利用して正常に動作しなかった、というのは
どのような状況だったのか教えていただくことは可能ですか?

問題が発生する帳票定義ファイルがもしありましたら、
ご提供いただけますと幸いです。

2022年6月22日水曜日 8:56:34 UTC+9 Yamaguchi:

Yamaguchi

unread,
Jun 22, 2022, 2:23:54 AM6/22/22
to RapidReportサポート QAフォーラム
NPOI2.1.3.1を利用して正常に動作しなかった のは、xlsxのセルに値を書き込んだ時です。
書き込んだ後、Excelファイルを開くと、修復が必要であるメッセージが表示されます。
同様の事象はWEB上でも見られ、NPOI自体のバグと思われます。

なお、この処理はRapidReportとは無関係の処理になります。

以上、よろしくお願いいたします。

2022年6月22日水曜日 11:26:56 UTC+9 RapidReport:

RapidReport

unread,
Jun 27, 2022, 12:08:46 AM6/27/22
to RapidReportサポート QAフォーラム
NPOI2.5.6への差し替えはすぐには難しそうでしたので、
とりあえず現バージョンのままnamespaceを変更したものを用意しました。

以下からダウンロードできます。
https://rapidreport.systembase.co.jp/release/rapidreport_xlsx5.14.1.zip

NPOIの名前空間には jp.co.systembase. を付加しています。
また、dllファイル名にも systembase. を付加しています。
これで、NPOI2.5.6とも共存できるはずです。
この修正は次バージョンにも反映する予定です。

2022年6月22日水曜日 15:23:54 UTC+9 Yamaguchi:

Yamaguchi

unread,
Jun 27, 2022, 2:06:30 AM6/27/22
to RapidReportサポート QAフォーラム
対応ありがとうございます。確認してみました。

最新のNPOI(2.5.6)は、SharpZipLib 1.3.3以上に依存しています。
RapidReportの 現状のSharpZipLibは、0.86となっています。

 SharpZipLibを1.3.3に置き換えると、RapidReportがNPOIを使用する箇所でエラーとなり、
置き換えないと、 NPOI2.5.6を呼び出した箇所でエラーとなります。

SharpZipLibについても、namespace、dll名を変更していただくことは可能でしょうか?

また、systembase.report.renderer.xls.dllも同時に使用しているため、
こちらのdllも、 jp.co.systembase.NPOIでビルドするようにしていただけないでしょうか?

以上、よろしくお願いいたします。

2022年6月27日月曜日 13:08:46 UTC+9 RapidReport:

RapidReport

unread,
Jun 27, 2022, 8:29:56 PM6/27/22
to RapidReportサポート QAフォーラム
RapidReport同梱のSharpZipLibは含めない状態で、
NuGetからNPOI2.5.6をインストールすると、SharpZipLib1.3.3もインストールされ、
さらにconfigファイルにバージョン解決の設定がなされると思います。

こちらで試したところ、(実行ファイル名).config に以下のような内容が出力されました。
      <dependentAssembly>
        <assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.3.3.11" newVersion="1.3.3.11" />
      </dependentAssembly>

このファイルがある状態でならば、新旧のNPOIを共存させてそれぞれ利用できるようでした。

また、xls版を以下に用意しました。

2022年6月27日月曜日 15:06:30 UTC+9 Yamaguchi:

Yamaguchi

unread,
Jun 27, 2022, 10:04:34 PM6/27/22
to RapidReportサポート QAフォーラム
ご回答ありがとうございます。
おっしゃるとおり、NuGetでインストールすれば、新旧のNPOIが問題なく動作しました。
失礼しました。
※インターネットに接続できない環境だったため、dllを直接参照していましたが、
 nugetファイルをローカル環境に配置してインストールするようにしました。

2022年6月28日火曜日 9:29:56 UTC+9 RapidReport:
Reply all
Reply to author
Forward
0 new messages