Grapecity社のFlexGridを使用し、フォーム上に表を作成しています。
作成された表を下記のようにしてエクセルに保存したいのですが、
保存先にすでに同名のファイルがある場合の上書きの時に、
「System.IO.EndOfStreamException ストリームの終わりを超えて読み取ることはできません」
の例外エラーが発生します。
Private Sub btnXlsOut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXlsOut.Click
SaveFileDialog1.Title = "名前をつけてファイルを保存"
SaveFileDialog1.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
SaveFileDialog1.FileName = "test.xls"
SaveFileDialog1.Filter = "エクセル|*.xls"
SaveFileDialog1.FilterIndex = 1
' ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する
If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
C1FGrid.SaveExcel(SaveFileDialog1.FileName(), "minou", C1.Win.C1FlexGrid.FileFlags.IncludeFixedCells)
End If
End Sub
同名のファイルがない場合は、正常に保存出来ています。
このエラーが出たときは、何から調べればいいでしょうか。
自己解決しましたが、原因はつかめていません。
保存先に元あったファイルは、
オフコンから出力したテキストデータをMS-ACCESS2003でEXCEL形式に加工したものでした。
このファイルに対して上書きを行おうとすると、
EndOfStreamExceptionが出てしまっていました。
保存先の同名ファイルを削除し新たなファイルをプログラムにより作成した後は、
上書きしても何の問題も発生しなくなりました。
ファイル内の行数/列数が多い/少ない、シート数が多い/少ないとかも、
特に関係ないようです。
問題が解消されてはいますので、ひとまず解決とします。
ツイート | ![]() |