この記事は公開から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'の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?ブックの発行元が信頼できる場合は、[はい]をクリックしてください。
のような回復確認メッセージが表示されてしまう。
検証ソースコード
// 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から取得して自前でビルドしたバイナリを利用する。
参考ウェブサイトなど
- NuGet Gallery
NPOI
以上です。