@@ -785,12 +785,11 @@ func (f *File) getPivotTableDataRange(opts *PivotTableOptions) error {
785
785
opts .pivotDataRange = opts .DataRange
786
786
return nil
787
787
}
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 {
794
793
for _ , table := range tables {
795
794
if table .Name == opts .DataRange {
796
795
opts .pivotDataRange , opts .namedDataRange = fmt .Sprintf ("%s!%s" , sheetName , table .Range ), true
@@ -1016,8 +1015,8 @@ func (f *File) DeletePivotTable(sheet, name string) error {
1016
1015
return err
1017
1016
}
1018
1017
pivotTableCaches := map [string ]int {}
1019
- for _ , sheetName := range f . GetSheetList () {
1020
- sheetPivotTables , _ := f . GetPivotTables ( sheetName )
1018
+ pivotTables , _ := f . getPivotTables ()
1019
+ for _ , sheetPivotTables := range pivotTables {
1021
1020
for _ , sheetPivotTable := range sheetPivotTables {
1022
1021
pivotTableCaches [sheetPivotTable .pivotCacheXML ]++
1023
1022
}
@@ -1038,3 +1037,17 @@ func (f *File) DeletePivotTable(sheet, name string) error {
1038
1037
}
1039
1038
return newNoExistTableError (name )
1040
1039
}
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
+ }
0 commit comments