既存のXLSXファイルをNPOIで保存してEXCELで開くとファイルの回復確認が表示される問題への対応

この記事は公開から4年以上経過しています。

EXCELで配色やテーマを変更したXLSXファイルをOSSのMicrosoft® Officeファイル操作ライブラリNPOIで開いて保存すると、そのファイルをEXCELで開きなおしたときに回復確認メッセージが表示されてしまう問題についての備忘録です。

NuGetのNPOI(2.5.2)に、以下の問題への対応コミットがマージされています。

NPOIのバグならデバッグしてGitHubにcontributeでもしようかとソースを眺めていたところ、最近以下のコミット

SHA-1: a74638efeae0e6b8d10c1f26a6623171ab0f32e1
* provide compatible xmlns in sheet, styles and workbook xml

にて作者のTony Quさんが既に対応してくれていたようです。

Thanks for the good job, Tony Qu!


問題

EXCELで配色やテーマを変更したXLSXファイルを、以下のような検証ソースコードを使いNPOI(2.5.1)で再保存すると、EXCELで開き直したときに

'XXX.xlsx'の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?ブックの発行元が信頼できる場合は、[はい]をクリックしてください。

のような回復確認メッセージが表示されてしまう。

file

file


検証ソースコード

// XLSX読み込み
var x = WorkbookFactory.Create("mycolors.xlsx");
// XLSX書き込み
using (var fs = new FileStream("saved_workbook.xlsx", FileMode.Create))
{
    x.Write(fs);
}


原因

コミットログと修正内容から、NPOI側のマークアップ互換性の問題と思われる。


対応

2020/9/28現在ではNuGetのNPOI最新の安定版リリースは2.5.1でこの問題は解消していないため、masterブランチの最新リビジョンなど、上記対応リビジョンa74638efeae0e6b8d10c1f26a6623171ab0f32e1以降のソースをGitHubから取得して自前でビルドしたバイナリを利用する。


参考ウェブサイトなど

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする