作成日: 2018/10/22 最終更新日: 2018/12/18
文書種別
不具合
状況
修正済み
詳細
■事象
データ連結したセル上に数式を設定した状態で、Excel形式にエクスポートすると破損したファイル(※)が出力される場合があります。
※ファイルを開くと「'xxx.xlsx' の一部の内容に問題が見つかりました。可能な限り内容を回復しますか? ブックの発行元が信頼できる場合は、[はい] をクリックしてください。」と表示され、[はい]をクリックしても、問題は解消されません。
この問題は、データ連結されたSPREAD上の同一列状の複数のセルに数式を設定している場合に発生します。
■サンプルコード(VB.NET)
データ連結したセル上に数式を設定した状態で、Excel形式にエクスポートすると破損したファイル(※)が出力される場合があります。
※ファイルを開くと「'xxx.xlsx' の一部の内容に問題が見つかりました。可能な限り内容を回復しますか? ブックの発行元が信頼できる場合は、[はい] をクリックしてください。」と表示され、[はい]をクリックしても、問題は解消されません。
この問題は、データ連結されたSPREAD上の同一列状の複数のセルに数式を設定している場合に発生します。
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データを生成します。
Dim dt As DataTable = New DataTable("Test")
dt.Columns.Add("ColA", GetType(Int32))
dt.Columns.Add("ColB", GetType(Int32))
For i As Integer = 0 To 10
dt.Rows.Add(i + 1, i + 2)
Next
dt.AcceptChanges()
' 生成したデータをSPREADに連結します。
FpSpread1.ActiveSheet.DataAutoCellTypes = False
FpSpread1.ActiveSheet.DataAutoSizeColumns = False
FpSpread1.ActiveSheet.DataSource = dt
' データ連結された同一列上の異なるセルの数式を設定します。
FpSpread1.ActiveSheet.Cells(2, 0).Formula = "SUM(A1:A2)"
FpSpread1.ActiveSheet.Cells(5, 0).Formula = "SUM(A4:A5)"
' Excelファイルにエクスポートします。
FpSpread1.SaveExcel("sample.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
' データを生成します。
Dim dt As DataTable = New DataTable("Test")
dt.Columns.Add("ColA", GetType(Int32))
dt.Columns.Add("ColB", GetType(Int32))
For i As Integer = 0 To 10
dt.Rows.Add(i + 1, i + 2)
Next
dt.AcceptChanges()
' 生成したデータをSPREADに連結します。
FpSpread1.ActiveSheet.DataAutoCellTypes = False
FpSpread1.ActiveSheet.DataAutoSizeColumns = False
FpSpread1.ActiveSheet.DataSource = dt
' データ連結された同一列上の異なるセルの数式を設定します。
FpSpread1.ActiveSheet.Cells(2, 0).Formula = "SUM(A1:A2)"
FpSpread1.ActiveSheet.Cells(5, 0).Formula = "SUM(A4:A5)"
' Excelファイルにエクスポートします。
FpSpread1.SaveExcel("sample.xlsx", FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
回避方法
Service Pack 2(v11.0.4503.2012)で修正済み。
Service Pack 2を適用しない場合、SPREADにデータ連結した状態で回避する方法はありません。
代替案としては、集計関数を設定する行を非連結行に入れ替える方法、もしくはExcel出力用のSPREADをメモリ上に生成し、フォーム上の値・数式を非連結データとして設定し、エクスポートする方法が考えられます。
Service Pack 2を適用しない場合、SPREADにデータ連結した状態で回避する方法はありません。
代替案としては、集計関数を設定する行を非連結行に入れ替える方法、もしくはExcel出力用のSPREADをメモリ上に生成し、フォーム上の値・数式を非連結データとして設定し、エクスポートする方法が考えられます。
旧文書番号
83311