@@ -28,54 +28,112 @@ func TestAddPivotTable(t *testing.T) {
2828 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
2929 DataRange : "Sheet1!$A$1:$E$31" ,
3030 PivotTableRange : "Sheet1!$G$2:$M$34" ,
31- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
31+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
3232 Filter : []PivotTableField {{Data : "Region" }},
33- Columns : []PivotTableField {{Data : "Type" }},
33+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
3434 Data : []PivotTableField {{Data : "Sales" , Subtotal : "Sum" , Name : "Summarize by Sum" }},
35+ RowGrandTotals : true ,
36+ ColGrandTotals : true ,
37+ ShowDrill : true ,
38+ ShowRowHeaders : true ,
39+ ShowColHeaders : true ,
40+ ShowLastColumn : true ,
3541 }))
3642 // Use different order of coordinate tests
3743 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
3844 DataRange : "Sheet1!$A$1:$E$31" ,
3945 PivotTableRange : "Sheet1!$U$34:$O$2" ,
40- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
41- Columns : []PivotTableField {{Data : "Type" }},
46+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
47+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
4248 Data : []PivotTableField {{Data : "Sales" , Subtotal : "Average" , Name : "Summarize by Average" }},
49+ RowGrandTotals : true ,
50+ ColGrandTotals : true ,
51+ ShowDrill : true ,
52+ ShowRowHeaders : true ,
53+ ShowColHeaders : true ,
54+ ShowLastColumn : true ,
4355 }))
4456
4557 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
4658 DataRange : "Sheet1!$A$1:$E$31" ,
4759 PivotTableRange : "Sheet1!$W$2:$AC$34" ,
48- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
60+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
4961 Columns : []PivotTableField {{Data : "Region" }},
5062 Data : []PivotTableField {{Data : "Sales" , Subtotal : "Count" , Name : "Summarize by Count" }},
63+ RowGrandTotals : true ,
64+ ColGrandTotals : true ,
65+ ShowDrill : true ,
66+ ShowRowHeaders : true ,
67+ ShowColHeaders : true ,
68+ ShowLastColumn : true ,
5169 }))
5270 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
5371 DataRange : "Sheet1!$A$1:$E$31" ,
5472 PivotTableRange : "Sheet1!$G$37:$W$50" ,
5573 Rows : []PivotTableField {{Data : "Month" }},
56- Columns : []PivotTableField {{Data : "Region" }, {Data : "Year" }},
74+ Columns : []PivotTableField {{Data : "Region" , DefaultSubtotal : true }, {Data : "Year" }},
5775 Data : []PivotTableField {{Data : "Sales" , Subtotal : "CountNums" , Name : "Summarize by CountNums" }},
76+ RowGrandTotals : true ,
77+ ColGrandTotals : true ,
78+ ShowDrill : true ,
79+ ShowRowHeaders : true ,
80+ ShowColHeaders : true ,
81+ ShowLastColumn : true ,
5882 }))
5983 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
6084 DataRange : "Sheet1!$A$1:$E$31" ,
6185 PivotTableRange : "Sheet1!$AE$2:$AG$33" ,
62- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
86+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
6387 Data : []PivotTableField {{Data : "Sales" , Subtotal : "Max" , Name : "Summarize by Max" }},
88+ RowGrandTotals : true ,
89+ ColGrandTotals : true ,
90+ ShowDrill : true ,
91+ ShowRowHeaders : true ,
92+ ShowColHeaders : true ,
93+ ShowLastColumn : true ,
94+ }))
95+ // Create pivot table with empty subtotal field name and specified style
96+ assert .NoError (t , f .AddPivotTable (& PivotTableOption {
97+ DataRange : "Sheet1!$A$1:$E$31" ,
98+ PivotTableRange : "Sheet1!$AJ$2:$AP1$35" ,
99+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
100+ Filter : []PivotTableField {{Data : "Region" }},
101+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
102+ Data : []PivotTableField {{Subtotal : "Sum" , Name : "Summarize by Sum" }},
103+ RowGrandTotals : true ,
104+ ColGrandTotals : true ,
105+ ShowDrill : true ,
106+ ShowRowHeaders : true ,
107+ ShowColHeaders : true ,
108+ ShowLastColumn : true ,
109+ PivotTableStyleName : "PivotStyleLight19" ,
64110 }))
65111 f .NewSheet ("Sheet2" )
66112 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
67113 DataRange : "Sheet1!$A$1:$E$31" ,
68114 PivotTableRange : "Sheet2!$A$1:$AR$15" ,
69115 Rows : []PivotTableField {{Data : "Month" }},
70- Columns : []PivotTableField {{Data : "Region" }, {Data : "Type" }, {Data : "Year" }},
116+ Columns : []PivotTableField {{Data : "Region" , DefaultSubtotal : true }, {Data : "Type" , DefaultSubtotal : true }, {Data : "Year" }},
71117 Data : []PivotTableField {{Data : "Sales" , Subtotal : "Min" , Name : "Summarize by Min" }},
118+ RowGrandTotals : true ,
119+ ColGrandTotals : true ,
120+ ShowDrill : true ,
121+ ShowRowHeaders : true ,
122+ ShowColHeaders : true ,
123+ ShowLastColumn : true ,
72124 }))
73125 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
74126 DataRange : "Sheet1!$A$1:$E$31" ,
75127 PivotTableRange : "Sheet2!$A$18:$AR$54" ,
76- Rows : []PivotTableField {{Data : "Month" }, {Data : "Type" }},
77- Columns : []PivotTableField {{Data : "Region" }, {Data : "Year" }},
128+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Type" }},
129+ Columns : []PivotTableField {{Data : "Region" , DefaultSubtotal : true }, {Data : "Year" }},
78130 Data : []PivotTableField {{Data : "Sales" , Subtotal : "Product" , Name : "Summarize by Product" }},
131+ RowGrandTotals : true ,
132+ ColGrandTotals : true ,
133+ ShowDrill : true ,
134+ ShowRowHeaders : true ,
135+ ShowColHeaders : true ,
136+ ShowLastColumn : true ,
79137 }))
80138
81139 // Test empty pivot table options
@@ -84,65 +142,65 @@ func TestAddPivotTable(t *testing.T) {
84142 assert .EqualError (t , f .AddPivotTable (& PivotTableOption {
85143 DataRange : "Sheet1!$A$1:$A$1" ,
86144 PivotTableRange : "Sheet1!$U$34:$O$2" ,
87- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
88- Columns : []PivotTableField {{Data : "Type" }},
145+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
146+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
89147 Data : []PivotTableField {{Data : "Sales" }},
90148 }), `parameter 'DataRange' parsing error: parameter is invalid` )
91149 // Test the data range of the worksheet that is not declared
92150 assert .EqualError (t , f .AddPivotTable (& PivotTableOption {
93151 DataRange : "$A$1:$E$31" ,
94152 PivotTableRange : "Sheet1!$U$34:$O$2" ,
95- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
96- Columns : []PivotTableField {{Data : "Type" }},
153+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
154+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
97155 Data : []PivotTableField {{Data : "Sales" }},
98156 }), `parameter 'DataRange' parsing error: parameter is invalid` )
99157 // Test the worksheet declared in the data range does not exist
100158 assert .EqualError (t , f .AddPivotTable (& PivotTableOption {
101159 DataRange : "SheetN!$A$1:$E$31" ,
102160 PivotTableRange : "Sheet1!$U$34:$O$2" ,
103- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
104- Columns : []PivotTableField {{Data : "Type" }},
161+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
162+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
105163 Data : []PivotTableField {{Data : "Sales" }},
106164 }), "sheet SheetN is not exist" )
107165 // Test the pivot table range of the worksheet that is not declared
108166 assert .EqualError (t , f .AddPivotTable (& PivotTableOption {
109167 DataRange : "Sheet1!$A$1:$E$31" ,
110168 PivotTableRange : "$U$34:$O$2" ,
111- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
112- Columns : []PivotTableField {{Data : "Type" }},
169+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
170+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
113171 Data : []PivotTableField {{Data : "Sales" }},
114172 }), `parameter 'PivotTableRange' parsing error: parameter is invalid` )
115173 // Test the worksheet declared in the pivot table range does not exist
116174 assert .EqualError (t , f .AddPivotTable (& PivotTableOption {
117175 DataRange : "Sheet1!$A$1:$E$31" ,
118176 PivotTableRange : "SheetN!$U$34:$O$2" ,
119- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
120- Columns : []PivotTableField {{Data : "Type" }},
177+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
178+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
121179 Data : []PivotTableField {{Data : "Sales" }},
122180 }), "sheet SheetN is not exist" )
123181 // Test not exists worksheet in data range
124182 assert .EqualError (t , f .AddPivotTable (& PivotTableOption {
125183 DataRange : "SheetN!$A$1:$E$31" ,
126184 PivotTableRange : "Sheet1!$U$34:$O$2" ,
127- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
128- Columns : []PivotTableField {{Data : "Type" }},
185+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
186+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
129187 Data : []PivotTableField {{Data : "Sales" }},
130188 }), "sheet SheetN is not exist" )
131189 // Test invalid row number in data range
132190 assert .EqualError (t , f .AddPivotTable (& PivotTableOption {
133191 DataRange : "Sheet1!$A$0:$E$31" ,
134192 PivotTableRange : "Sheet1!$U$34:$O$2" ,
135- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
136- Columns : []PivotTableField {{Data : "Type" }},
193+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
194+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
137195 Data : []PivotTableField {{Data : "Sales" }},
138196 }), `parameter 'DataRange' parsing error: cannot convert cell "A0" to coordinates: invalid cell name "A0"` )
139197 assert .NoError (t , f .SaveAs (filepath .Join ("test" , "TestAddPivotTable1.xlsx" )))
140198 // Test with field names that exceed the length limit and invalid subtotal
141199 assert .NoError (t , f .AddPivotTable (& PivotTableOption {
142200 DataRange : "Sheet1!$A$1:$E$31" ,
143201 PivotTableRange : "Sheet1!$G$2:$M$34" ,
144- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
145- Columns : []PivotTableField {{Data : "Type" }},
202+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
203+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
146204 Data : []PivotTableField {{Data : "Sales" , Subtotal : "-" , Name : strings .Repeat ("s" , 256 )}},
147205 }))
148206
@@ -158,8 +216,8 @@ func TestAddPivotTable(t *testing.T) {
158216 assert .EqualError (t , f .addPivotCache (0 , "" , & PivotTableOption {
159217 DataRange : "$A$1:$E$31" ,
160218 PivotTableRange : "Sheet1!$U$34:$O$2" ,
161- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
162- Columns : []PivotTableField {{Data : "Type" }},
219+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
220+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
163221 Data : []PivotTableField {{Data : "Sales" }},
164222 }, nil ), "parameter 'DataRange' parsing error: parameter is invalid" )
165223 // Test add pivot table with empty options
@@ -170,8 +228,8 @@ func TestAddPivotTable(t *testing.T) {
170228 assert .EqualError (t , f .addPivotFields (nil , & PivotTableOption {
171229 DataRange : "$A$1:$E$31" ,
172230 PivotTableRange : "Sheet1!$U$34:$O$2" ,
173- Rows : []PivotTableField {{Data : "Month" }, {Data : "Year" }},
174- Columns : []PivotTableField {{Data : "Type" }},
231+ Rows : []PivotTableField {{Data : "Month" , DefaultSubtotal : true }, {Data : "Year" }},
232+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
175233 Data : []PivotTableField {{Data : "Sales" }},
176234 }), `parameter 'DataRange' parsing error: parameter is invalid` )
177235 // Test get pivot fields index with empty data range
@@ -208,7 +266,7 @@ func TestAddPivotColFields(t *testing.T) {
208266 // Test invalid data range
209267 assert .EqualError (t , f .addPivotColFields (& xlsxPivotTableDefinition {}, & PivotTableOption {
210268 DataRange : "Sheet1!$A$1:$A$1" ,
211- Columns : []PivotTableField {{Data : "Type" }},
269+ Columns : []PivotTableField {{Data : "Type" , DefaultSubtotal : true }},
212270 }), `parameter 'DataRange' parsing error: parameter is invalid` )
213271}
214272
0 commit comments