LoadTextFileRangeメソッドでファイルパスを指定してファイルを開くと、そのファイルが開かれたままになる
対象製品
SPREAD for Windows Forms 7.0J
状況
修正済み
詳細
LoadTextFileRangeメソッドでファイルパスを指定してファイルを開くと、そのファイルが開かれたままになります。
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Buttonをクリックします
4.再度Buttonをクリックします
--例外(System.IO.IOException)が発生します
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.Columns(i).Label = String.Format("列{0}", i + 1)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strFileNm As String = "test.csv"
Dim strRec As String = String.Empty
Dim strComma As String = ","
Dim iFno As Integer
iFno = FreeFile()
FileOpen(iFno, strFileNm, OpenMode.Output)
For i As Integer = 0 To 10
strRec = strRec + "aaaa"
strRec = strRec + strComma
strRec = strRec + "bbbb"
strRec = strRec + strComma
strRec = strRec + "cccc"
strRec = strRec + strComma
strRec = strRec + "dddd"
strRec = strRec + strComma
strRec = strRec + "eeee"
strRec = strRec + strComma
strRec = strRec + "ffff"
strRec = strRec + strComma
strRec = strRec + vbCrLf
Print(iFno, strRec)
strRec = String.Empty
Next
FileClose(iFno)
Dim range As New FarPoint.Win.Spread.Model.CellRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount)
FpSpread1.ActiveSheet.LoadTextFileRange("test.csv", range, FarPoint.Win.Spread.TextFileFlags.Unformatted, vbCrLf, ",", Chr(34))
End Sub
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Buttonをクリックします
4.再度Buttonをクリックします
--例外(System.IO.IOException)が発生します
【サンプルコード】
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.Columns(i).Label = String.Format("列{0}", i + 1)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strFileNm As String = "test.csv"
Dim strRec As String = String.Empty
Dim strComma As String = ","
Dim iFno As Integer
iFno = FreeFile()
FileOpen(iFno, strFileNm, OpenMode.Output)
For i As Integer = 0 To 10
strRec = strRec + "aaaa"
strRec = strRec + strComma
strRec = strRec + "bbbb"
strRec = strRec + strComma
strRec = strRec + "cccc"
strRec = strRec + strComma
strRec = strRec + "dddd"
strRec = strRec + strComma
strRec = strRec + "eeee"
strRec = strRec + strComma
strRec = strRec + "ffff"
strRec = strRec + strComma
strRec = strRec + vbCrLf
Print(iFno, strRec)
strRec = String.Empty
Next
FileClose(iFno)
Dim range As New FarPoint.Win.Spread.Model.CellRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount)
FpSpread1.ActiveSheet.LoadTextFileRange("test.csv", range, FarPoint.Win.Spread.TextFileFlags.Unformatted, vbCrLf, ",", Chr(34))
End Sub
回避方法
Service Pack 6(v7.0.2019.2008)で修正済み。
Service Pack 6(v7.0.2019.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
LoadTextFileRangeのオーバーロードで、ファイルパスを指定するものから、Streamを読み込む形式に変更します。
【サンプルコード】
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strFileNm As String = "test.csv"
Dim strRec As String = String.Empty
Dim strComma As String = ","
Dim iFno As Integer
iFno = FreeFile()
FileOpen(iFno, strFileNm, OpenMode.Output)
For i As Integer = 0 To 10
strRec = strRec + "aaaa"
strRec = strRec + strComma
strRec = strRec + "bbbb"
strRec = strRec + strComma
strRec = strRec + "cccc"
strRec = strRec + strComma
strRec = strRec + "dddd"
strRec = strRec + strComma
strRec = strRec + "eeee"
strRec = strRec + strComma
strRec = strRec + "ffff"
strRec = strRec + strComma
strRec = strRec + vbCrLf
Print(iFno, strRec)
strRec = String.Empty
Next
FileClose(iFno)
' 回避策
Dim range As New FarPoint.Win.Spread.Model.CellRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount)
'FpSpread1.ActiveSheet.LoadTextFileRange("test.csv", range, FarPoint.Win.Spread.TextFileFlags.Unformatted, vbCrLf, ",", Chr(34))
Using fs As New System.IO.FileStream("test.csv", IO.FileMode.Open)
FpSpread1.ActiveSheet.LoadTextFileRange(fs, range, FarPoint.Win.Spread.TextFileFlags.Unformatted, vbCrLf, ",", Chr(34))
End Using
End Sub
Service Pack 6(v7.0.2019.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
LoadTextFileRangeのオーバーロードで、ファイルパスを指定するものから、Streamを読み込む形式に変更します。
【サンプルコード】
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strFileNm As String = "test.csv"
Dim strRec As String = String.Empty
Dim strComma As String = ","
Dim iFno As Integer
iFno = FreeFile()
FileOpen(iFno, strFileNm, OpenMode.Output)
For i As Integer = 0 To 10
strRec = strRec + "aaaa"
strRec = strRec + strComma
strRec = strRec + "bbbb"
strRec = strRec + strComma
strRec = strRec + "cccc"
strRec = strRec + strComma
strRec = strRec + "dddd"
strRec = strRec + strComma
strRec = strRec + "eeee"
strRec = strRec + strComma
strRec = strRec + "ffff"
strRec = strRec + strComma
strRec = strRec + vbCrLf
Print(iFno, strRec)
strRec = String.Empty
Next
FileClose(iFno)
' 回避策
Dim range As New FarPoint.Win.Spread.Model.CellRange(0, 0, FpSpread1.ActiveSheet.RowCount, FpSpread1.ActiveSheet.ColumnCount)
'FpSpread1.ActiveSheet.LoadTextFileRange("test.csv", range, FarPoint.Win.Spread.TextFileFlags.Unformatted, vbCrLf, ",", Chr(34))
Using fs As New System.IO.FileStream("test.csv", IO.FileMode.Open)
FpSpread1.ActiveSheet.LoadTextFileRange(fs, range, FarPoint.Win.Spread.TextFileFlags.Unformatted, vbCrLf, ",", Chr(34))
End Using
End Sub