数式を設定してxlsファイルにエクスポートすると例外が発生することがある

文書番号 : 39182     文書種別 : 不具合     登録日 : 2015/11/24     最終更新日 : 2016/02/12
文書を印刷する
対象製品
SPREAD for Windows Forms 7.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
回避方法
Service Pack 6(v7.0.2019.2008)で修正済み。
Service Pack 6(v7.0.2019.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.Reset() ' 回避策(SPREADのリセット)
    FpSpread1.OpenExcel("excel.xls") ' 回避策(Excelファイルのインポート)
    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