数式を設定してxlsファイルにエクスポートすると例外が発生することがある
対象製品
SPREAD for Windows Forms 8.0J
状況
修正済み
詳細
数式を設定したSPREADをxls形式ファイルにエクスポートした後にシートを追加し、再度xls形式ファイルにエクスポートすると例外が発生します。
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Buttonをクリックします
4.再度Buttonをクリックします
--例外が発生します
【サンプルコード】
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.Cells(0, 1).Value = 500
FpSpread1.ActiveSheet.Cells(1, 1).Value = -250
FpSpread1.ActiveSheet.Cells(2, 0).Value = 500
FpSpread1.ActiveSheet.Cells(2, 1).Formula = "IF(A3<>"""",((B$1+B$2)+SUM(A3:A3)),"""")"
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
FpSpread1.SaveExcel("excel.xls")
FpSpread1.Sheets.Insert(0, New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", FpSpread1.Sheets.Count + 1)))
End Sub
【手順】
1.新規フォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.Buttonをクリックします
4.再度Buttonをクリックします
--例外が発生します
【サンプルコード】
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.Cells(0, 1).Value = 500
FpSpread1.ActiveSheet.Cells(1, 1).Value = -250
FpSpread1.ActiveSheet.Cells(2, 0).Value = 500
FpSpread1.ActiveSheet.Cells(2, 1).Formula = "IF(A3<>"""",((B$1+B$2)+SUM(A3:A3)),"""")"
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
FpSpread1.SaveExcel("excel.xls")
FpSpread1.Sheets.Insert(0, New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", FpSpread1.Sheets.Count + 1)))
End Sub
回避方法
Service Pack 2(v8.0.3503.2008)で修正済み。
Service Pack 2(v8.0.3503.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
SaveExcelメソッドの後にOpenExcelメソッドを実行するかxlsx形式ファイルにエクスポートします。
【サンプルコード(OpenExcelメソッド)】
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
FpSpread1.SaveExcel("excel.xls")
FpSpread1.OpenExcel("excel.xls") ' 回避策
FpSpread1.Sheets.Insert(0, New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", FpSpread1.Sheets.Count + 1)))
End Sub
【サンプルコード(xlsx形式ファイル)】
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'FpSpread1.SaveExcel("excel.xls")
FpSpread1.SaveExcel("excel.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat) ' 回避策
FpSpread1.Sheets.Insert(0, New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", FpSpread1.Sheets.Count + 1)))
End Sub
Service Pack 2(v8.0.3503.2008)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
SaveExcelメソッドの後にOpenExcelメソッドを実行するかxlsx形式ファイルにエクスポートします。
【サンプルコード(OpenExcelメソッド)】
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
FpSpread1.SaveExcel("excel.xls")
FpSpread1.OpenExcel("excel.xls") ' 回避策
FpSpread1.Sheets.Insert(0, New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", FpSpread1.Sheets.Count + 1)))
End Sub
【サンプルコード(xlsx形式ファイル)】
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'FpSpread1.SaveExcel("excel.xls")
FpSpread1.SaveExcel("excel.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat) ' 回避策
FpSpread1.Sheets.Insert(0, New FarPoint.Win.Spread.SheetView(String.Format("Sheet{0}", FpSpread1.Sheets.Count + 1)))
End Sub