作成日: 2018/05/11 最終更新日: 2018/05/11
文書種別
不具合
状況
修正済み
詳細
データ連結しているSPREADをOpenXML形式(.xlsx)に出力した時、StackOverflowExceptionが発生する場合があります。
以下のいずれかの条件を満たしている場合に、本事象が発生します。
■条件1
連結しているデータセットにブール型(Boolean)のフィールドがあり、すべてのレコードについて、そのフィールドの値が"Null"である。
■条件2
以下の条件をすべて満たしている。
◎条件1
◎条件2
以下のいずれかの条件を満たしている場合に、本事象が発生します。
■条件1
連結しているデータセットにブール型(Boolean)のフィールドがあり、すべてのレコードについて、そのフィールドの値が"Null"である。
■条件2
以下の条件をすべて満たしている。
- 連結しているデータセット内の任意のフィールドに"Null"が含まれている。
- 任意の列でソートしている。
- SaveExcelメソッドのパラメータに"SaveAsViewed"と"UseOOXMLFormat"の両方を設定している。
◎条件1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 連結用データを生成します。
Dim dt As New DataTable("Test")
dt.Columns.Add("ColA", GetType(Boolean))
dt.Columns.Add("ColB", GetType(String))
' ※すべてのレコードについて、1列目(ブール型)の値を"Null"とします。 dt.Rows.Add(DBNull.Value, "String1")
dt.Rows.Add(DBNull.Value, "String2")
dt.AcceptChanges()
' SPREADに生成したデータを連結します。
FpSpread1.ActiveSheet.DataSource = dt
' OpenXML形式(.xlsx)で出力します。(ここで例外が発生します。)
FpSpread1.SaveExcel(”test.xlsx”, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
' 連結用データを生成します。
Dim dt As New DataTable("Test")
dt.Columns.Add("ColA", GetType(Boolean))
dt.Columns.Add("ColB", GetType(String))
' ※すべてのレコードについて、1列目(ブール型)の値を"Null"とします。 dt.Rows.Add(DBNull.Value, "String1")
dt.Rows.Add(DBNull.Value, "String2")
dt.AcceptChanges()
' SPREADに生成したデータを連結します。
FpSpread1.ActiveSheet.DataSource = dt
' OpenXML形式(.xlsx)で出力します。(ここで例外が発生します。)
FpSpread1.SaveExcel(”test.xlsx”, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
◎条件2
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 連結用データを生成します。
Dim dt As New DataTable("Test")
dt.Columns.Add("ColA", GetType(String))
dt.Columns.Add("ColB", GetType(String))
' ※データ内の任意のレコードに"Null"が含まれます。 dt.Rows.Add("a2", DBNull.Value)
dt.Rows.Add("a1", "b2")
dt.AcceptChanges()
' SPREADに生成したデータを連結します。
FpSpread1.ActiveSheet.DataSource = dt
' 1列目でソートします。
FpSpread1.ActiveSheet.Columns(0).AllowAutoSort = True
FpSpread1.ActiveSheet.AutoSortColumn(0, True)
' OpenXML形式(.xlsx)で出力します。(ここで例外が発生します。)
FpSpread1.SaveExcel("test.xlsx", _
FarPoint.Excel.ExcelSaveFlags.SaveAsViewed Or _
FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
' 連結用データを生成します。
Dim dt As New DataTable("Test")
dt.Columns.Add("ColA", GetType(String))
dt.Columns.Add("ColB", GetType(String))
' ※データ内の任意のレコードに"Null"が含まれます。 dt.Rows.Add("a2", DBNull.Value)
dt.Rows.Add("a1", "b2")
dt.AcceptChanges()
' SPREADに生成したデータを連結します。
FpSpread1.ActiveSheet.DataSource = dt
' 1列目でソートします。
FpSpread1.ActiveSheet.Columns(0).AllowAutoSort = True
FpSpread1.ActiveSheet.AutoSortColumn(0, True)
' OpenXML形式(.xlsx)で出力します。(ここで例外が発生します。)
FpSpread1.SaveExcel("test.xlsx", _
FarPoint.Excel.ExcelSaveFlags.SaveAsViewed Or _
FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat)
End Sub
回避方法
Service Pack 1(v11.0.4502.2012)で修正済み。
旧文書番号
41792