PivotTable.CalculateData() throws an exception

Hello,


We use Aspose.Cells in our application and have come across what seems to be a bug in Aspose.Cells.

The following code throws an exception on the line “pivotTable.CalculateData()” with the following error:

Exception:
An unhandled exception of type ‘System.IndexOutOfRangeException’ occurred in Aspose.Cells.dll

Additional information: Index was outside the bounds of the array.

at . (Cell )
at . (Int32 , Int32 )
at . ()
at . ()
at Aspose.Cells.Pivot.PivotTable.CalculateData()

VB Code:

Private Sub DoPivot()

Dim book As Aspose.Cells.Workbook = New Aspose.Cells.Workbook(“C:\Users\RichardS\Documents\Dev\AposePivotTableCalculateDataInput.xlsx”)
Dim pivotSheet As Aspose.Cells.Worksheet = book.Worksheets.Add(“Pivot Table”)
Dim pivotTables As Aspose.Cells.Pivot.PivotTableCollection = pivotSheet.PivotTables
Dim dataSheet As Aspose.Cells.Worksheet = book.Worksheets(“Data”)
Dim pivotIndex As Integer = pivotTables.Add(String.Format("=Data!A1:{0}", Aspose.Cells.CellsHelper.CellIndexToName(dataSheet.Cells.MaxDataRow, dataSheet.Cells.MaxDataColumn)), “A1”, “PivotTable1”)
Dim pivotTable As Aspose.Cells.Pivot.PivotTable = pivotTables(pivotIndex)

Dim style As Aspose.Cells.Style = book.CreateStyle()
style.Font.Size = 8
style.Font.Name = “Calibri”

pivotTable.PivotTableStyleType = Aspose.Cells.Pivot.PivotTableStyleType.PivotTableStyleMedium15

pivotTable.FormatAll(style)

pivotTable.EnableWizard = False
pivotTable.EnableFieldList = True

pivotSheet.MoveTo(0)

AddPivotRow(pivotTable, “Property Name”, “Property Name”, layoutInOutline:=True, layoutCompactRow:=True, isAutoSort:=True)
AddPivotRow(pivotTable, “Section Description”, “Section Description”, subTotals:=True, layoutSubtotalAtTop:=True, layoutInOutline:=True, layoutBlankLine:=True, hideDetail:=False, layoutCompactRow:=True)
AddPivotRow(pivotTable, “Account Category Two”, “Account Category Two”, subTotals:=True, layoutSubtotalAtTop:=True, layoutInOutline:=True, hideDetail:=False, layoutCompactRow:=True, isAutoSort:=True)
AddPivotRow(pivotTable, “Account Category Three”, “Account Category Three”, subTotals:=True, layoutSubtotalAtTop:=True, layoutInOutline:=True, hideDetail:=False, layoutCompactRow:=True, isAutoSort:=True)
AddPivotRow(pivotTable, “Transaction Description”, “Transaction Description”, layoutInOutline:=True, layoutCompactRow:=True, isAutoSort:=True)


AddPivotColumn(pivotTable, “Range”, “Range”, subTotals:=True)


AddPivotColumn(pivotTable, “PeriodDescription”, “Periods”)


AddPivotData(pivotTable, “Amount”, “Values”, “# ##0.00”)




pivotTable.ColumnGrand = False
pivotTable.RowGrand = False 'Setting to False causes .CalculateData() to throw the exception. If set to True, the exception does not occur.

pivotTable.IsGridDropZones = True


pivotTable.RefreshDataFlag = True
pivotTable.RefreshData()
pivotTable.CalculateData() ’ Throws Exception
pivotTable.RefreshDataFlag = False

pivotSheet.AutoFitColumns()

pivotSheet.Cells.StandardHeight = 11.25


book.Worksheets.ActiveSheetIndex = 0
book.Settings.HidePivotFieldList = True

book.Save(“C:\Users\RichardS\Documents\Dev\AsposePivotTableCalculateDataOutput.xlsx”, New Aspose.Cells.OoxmlSaveOptions)

End Sub

Public Shared Sub AddPivotRow(ByRef pivotTable As Aspose.Cells.Pivot.PivotTable, _
ByVal fieldName As String, _
caption As String, _
Optional ByVal subTotals As Boolean = False, _
Optional ByVal layoutInOutline As Boolean = False, _
Optional ByVal layoutBlankLine As Boolean = False, _
Optional ByVal layoutCompactRow As Boolean = False, _
Optional ByVal layoutSubtotalAtTop As Boolean = False, _
Optional ByVal numberFormat As String = “”, _
Optional ByVal hideDetail As Boolean = False,
Optional ByVal isAutoSort As Boolean = False,
Optional ByVal isDate As Boolean = False)

Dim pivotField As Aspose.Cells.Pivot.PivotField = pivotTable.RowFields.Item(pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Row, fieldName))

With pivotField
.DisplayName = caption
.ShowCompact = layoutCompactRow
.ShowInOutlineForm = layoutInOutline ’ xlTabular = 0, xlOutline = 1
.ShowSubtotalAtTop = layoutSubtotalAtTop
.InsertBlankRow = layoutBlankLine
.IsAutoSubtotals = subTotals
.NumberFormat = numberFormat
.HideDetail(hideDetail)
.IsAutoSort = isAutoSort
If isDate Then
.Number = 14
End If
End With
End Sub

Public Shared Sub AddPivotColumn(ByRef pivotTable As Aspose.Cells.Pivot.PivotTable, _
ByVal fieldName As String, _
caption As String, _
Optional ByVal subTotals As Boolean = False)

Dim pivotField As Aspose.Cells.Pivot.PivotField = pivotTable.ColumnFields.Item(pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Column, fieldName))

With pivotField
.DisplayName = caption
.IsAutoSubtotals = subTotals
.IsAscendSort = True
End With
End Sub


Public Shared Sub AddPivotData(ByRef pivotTable As Aspose.Cells.Pivot.PivotTable, _
ByVal fieldName As String, _
caption As String, _
numberFormat As String, _
Optional ByVal consolidationFunction As Aspose.Cells.ConsolidationFunction = Aspose.Cells.ConsolidationFunction.Sum)

Dim pivotField As Aspose.Cells.Pivot.PivotField = pivotTable.DataFields(pivotTable.AddFieldToArea(Aspose.Cells.Pivot.PivotFieldType.Data, fieldName))

With pivotField
.DisplayName = caption
.Function = consolidationFunction
.NumberFormat = numberFormat
End With
End Sub

The exception is thrown if we set pivotTable.RowGrand = False, however if we set it to True the exception does not occur.

Please see attached input sheet.

Occurred on Aspose.Cells v 8.3.2.

Your help will be greatly appreciated.

Thank you.

Hi Richard,


Thank you for contacting Aspose support.

We have evaluated your presented scenario while using the latest version of Aspose.Cells for .NET 8.3.2.3, and we are able to replicate the System.IndexOutOfRangeException with message Index was outside the bounds of the array, at PivotTable.CalculateData method when PivotTable.RowGrand is set to False. We have logged this incident in our issue tracking system under the ticket CELLSNET-43406 for further investigation & correction purposes. Please spare us little time to properly analyze this incident in order to pin point the problem cause. In the meanwhile, we will keep you posted with updates in this regard.

Thank you Babar for your prompt response.

Hi,

Thanks for your using Aspose.Cells.

Please download and try the latest fix: Aspose.Cells for .NET v8.3.2.4 and let us know your feedback.

Thank you very much for your fast response, very impressive! The issue is resolved in that version, thank you.



Hi Richard,


Thank you for the confirmation. Please feel free to contact us back in case you need our further assistance with Aspose APIs.

The issues you have found earlier (filed as CELLSNET-43406) have been fixed in this update.


This message was posted using Notification2Forum from Downloads module by Aspose Notifier.

The issues you have found earlier (filed as ) have been fixed in this update. This message was posted using BugNotificationTool from Downloads module by MuzammilKhan