瀏覽代碼

Merge pull request #710 from lbraconnier2/Pivot-failed-in-case-of-multi-columns-and-multi-data

fix pivot fails in case of multi columns and multi data
xuri 5 年之前
父節點
當前提交
9055a835a8
共有 2 個文件被更改,包括 21 次插入0 次删除
  1. 7 0
      pivotTable.go
  2. 14 0
      pivotTable_test.go

+ 7 - 0
pivotTable.go

@@ -485,6 +485,13 @@ func (f *File) addPivotColFields(pt *xlsxPivotTableDefinition, opt *PivotTableOp
 		})
 	}
 
+	//in order to create pivot in case there is many Columns and Many Datas
+	if len(opt.Data) > 1 {
+		pt.ColFields.Field = append(pt.ColFields.Field, &xlsxField{
+			X: -2,
+		})
+	}
+
 	// count col fields
 	pt.ColFields.Count = len(pt.ColFields.Field)
 	return err

+ 14 - 0
pivotTable_test.go

@@ -135,6 +135,20 @@ func TestAddPivotTable(t *testing.T) {
 		ShowColHeaders:  true,
 		ShowLastColumn:  true,
 	}))
+	//Test Pivot table with many data, many rows, many cols
+	assert.NoError(t, f.AddPivotTable(&PivotTableOption{
+		DataRange:       "Sheet1!$A$1:$E$31",
+		PivotTableRange: "Sheet2!$A$56:$AG$90",
+		Rows:            []PivotTableField{{Data: "Month", DefaultSubtotal: true}, {Data: "Year"}},
+		Columns:         []PivotTableField{{Data: "Region", DefaultSubtotal: true}, {Data: "Type"}},
+		Data:            []PivotTableField{{Data: "Sales", Subtotal: "Sum", Name: "Sum of Sales"}, {Data: "Sales", Subtotal: "Average", Name: "Average of Sales"}},
+		RowGrandTotals:  true,
+		ColGrandTotals:  true,
+		ShowDrill:       true,
+		ShowRowHeaders:  true,
+		ShowColHeaders:  true,
+		ShowLastColumn:  true,
+	}))
 
 	// Test empty pivot table options
 	assert.EqualError(t, f.AddPivotTable(nil), "parameter is required")