Skip to content

Commit c805be1

Browse files
This related for #810, add new functions DeleteSlicer and GetSlicers (#1943)
- Update unit tests
1 parent 9a38657 commit c805be1

File tree

8 files changed

+658
-42
lines changed

8 files changed

+658
-42
lines changed

errors.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,12 @@ func newInvalidStyleID(styleID int) error {
264264
return fmt.Errorf("invalid style ID %d", styleID)
265265
}
266266

267+
// newNoExistSlicerError defined the error message on receiving the non existing
268+
// slicer name.
269+
func newNoExistSlicerError(name string) error {
270+
return fmt.Errorf("slicer %s does not exist", name)
271+
}
272+
267273
// newNoExistTableError defined the error message on receiving the non existing
268274
// table name.
269275
func newNoExistTableError(name string) error {

pivotTable.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -785,12 +785,11 @@ func (f *File) getPivotTableDataRange(opts *PivotTableOptions) error {
785785
opts.pivotDataRange = opts.DataRange
786786
return nil
787787
}
788-
for _, sheetName := range f.GetSheetList() {
789-
tables, err := f.GetTables(sheetName)
790-
e := ErrSheetNotExist{sheetName}
791-
if err != nil && err.Error() != newNotWorksheetError(sheetName).Error() && err.Error() != e.Error() {
792-
return err
793-
}
788+
tbls, err := f.getTables()
789+
if err != nil {
790+
return err
791+
}
792+
for sheetName, tables := range tbls {
794793
for _, table := range tables {
795794
if table.Name == opts.DataRange {
796795
opts.pivotDataRange, opts.namedDataRange = fmt.Sprintf("%s!%s", sheetName, table.Range), true
@@ -1016,8 +1015,8 @@ func (f *File) DeletePivotTable(sheet, name string) error {
10161015
return err
10171016
}
10181017
pivotTableCaches := map[string]int{}
1019-
for _, sheetName := range f.GetSheetList() {
1020-
sheetPivotTables, _ := f.GetPivotTables(sheetName)
1018+
pivotTables, _ := f.getPivotTables()
1019+
for _, sheetPivotTables := range pivotTables {
10211020
for _, sheetPivotTable := range sheetPivotTables {
10221021
pivotTableCaches[sheetPivotTable.pivotCacheXML]++
10231022
}
@@ -1038,3 +1037,17 @@ func (f *File) DeletePivotTable(sheet, name string) error {
10381037
}
10391038
return newNoExistTableError(name)
10401039
}
1040+
1041+
// getPivotTables provides a function to get all pivot tables in a workbook.
1042+
func (f *File) getPivotTables() (map[string][]PivotTableOptions, error) {
1043+
pivotTables := map[string][]PivotTableOptions{}
1044+
for _, sheetName := range f.GetSheetList() {
1045+
pts, err := f.GetPivotTables(sheetName)
1046+
e := ErrSheetNotExist{sheetName}
1047+
if err != nil && err.Error() != newNotWorksheetError(sheetName).Error() && err.Error() != e.Error() {
1048+
return pivotTables, err
1049+
}
1050+
pivotTables[sheetName] = append(pivotTables[sheetName], pts...)
1051+
}
1052+
return pivotTables, nil
1053+
}

pivotTable_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,8 @@ func TestPivotTable(t *testing.T) {
343343
f.Pkg.Store("xl/pivotTables/pivotTable1.xml", MacintoshCyrillicCharset)
344344
_, err = f.GetPivotTables("Sheet1")
345345
assert.EqualError(t, err, "XML syntax error on line 1: invalid UTF-8")
346+
_, err = f.getPivotTables()
347+
assert.EqualError(t, err, "XML syntax error on line 1: invalid UTF-8")
346348
assert.NoError(t, f.Close())
347349
}
348350

0 commit comments

Comments
 (0)