NPOI で新しい Excel ファイルを作成してみましたが、問題なく動作し、Excel ファイルの読み取り (のみ) も問題ありません。ただし、既存の Excel ファイルを開いて行を追加したい場合、NPOI.HSSF.UserModel.HSSFWorkbook コンストラクターのコード行でクラッシュします。コードは次のとおりです。
using(FileStream fs = new FileStream(myFile, FileMode.Append)){
HSSFWorkbook wb = new HSSFWorkbook(fs); //<-- It is crashed right at here
....
}
例外の詳細はありません。アプリがクラッシュしたことを示すウィンドウが表示され、選択する 3 つのオプションが表示されます。真ん中のオプションは、アプリケーションを閉じることです:
スナップショット
。
FileMode を FileMode.Open に変更すると、コンストラクターは正常に動作しますが、それは読み取り専用です。FileAccess ポリシーに関連する何かがあると思い、これを試しました:
using(FileStream fs = new FileStream(myFile, FileMode.Append, FileAccess.ReadWrite)){//<-- However it is crashed right at here
HSSFWorkbook wb = new HSSFWorkbook(fs);
....
}
既存の Excel ファイルを開き (読み取り専用)、そのシートを 1 枚コピーして、このシートを新しい HSSFWorkbook に追加し、新しいファイル ストリームに書き込む (書き込み専用) という回避策を試しましたが、それを行う方法はありません。 HSSFWorkbook には Worksheet のコレクションがなく、Add メソッドもないため、CreateSheet() メソッドによって新しいシートが作成されるだけです。それはとても迷惑です。
これで私を助けてもらえますか?最初に NPOI を試してから、EPPlus を試します。
どうぞよろしくお願いいたします。
ありがとう。