0

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 を試します。
どうぞよろしくお願いいたします。
ありがとう。

4

1 に答える 1