From 3648335d7f45d5cf204c32345f47e8938fe86bfb Mon Sep 17 00:00:00 2001 From: xuri Date: Thu, 11 Feb 2021 00:07:46 +0800 Subject: This improves compatibility for worksheet relative XML path and multi rules auto filter --- table.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'table.go') diff --git a/table.go b/table.go index 8775929..ba8de25 100644 --- a/table.go +++ b/table.go @@ -348,9 +348,9 @@ func (f *File) autoFilter(sheet, ref string, refRange, col int, formatSet *forma return fmt.Errorf("incorrect index of column '%s'", formatSet.Column) } - filter.FilterColumn = &xlsxFilterColumn{ + filter.FilterColumn = append(filter.FilterColumn, &xlsxFilterColumn{ ColID: offset, - } + }) re := regexp.MustCompile(`"(?:[^"]|"")*"|\S+`) token := re.FindAllString(formatSet.Expression, -1) if len(token) != 3 && len(token) != 7 { @@ -372,14 +372,14 @@ func (f *File) writeAutoFilter(filter *xlsxAutoFilter, exp []int, tokens []strin // Single equality. var filters []*xlsxFilter filters = append(filters, &xlsxFilter{Val: tokens[0]}) - filter.FilterColumn.Filters = &xlsxFilters{Filter: filters} + filter.FilterColumn[0].Filters = &xlsxFilters{Filter: filters} } else if len(exp) == 3 && exp[0] == 2 && exp[1] == 1 && exp[2] == 2 { // Double equality with "or" operator. filters := []*xlsxFilter{} for _, v := range tokens { filters = append(filters, &xlsxFilter{Val: v}) } - filter.FilterColumn.Filters = &xlsxFilters{Filter: filters} + filter.FilterColumn[0].Filters = &xlsxFilters{Filter: filters} } else { // Non default custom filter. expRel := map[int]int{0: 0, 1: 2} @@ -387,7 +387,7 @@ func (f *File) writeAutoFilter(filter *xlsxAutoFilter, exp []int, tokens []strin for k, v := range tokens { f.writeCustomFilter(filter, exp[expRel[k]], v) if k == 1 { - filter.FilterColumn.CustomFilters.And = andRel[exp[k]] + filter.FilterColumn[0].CustomFilters.And = andRel[exp[k]] } } } @@ -408,12 +408,12 @@ func (f *File) writeCustomFilter(filter *xlsxAutoFilter, operator int, val strin Operator: operators[operator], Val: val, } - if filter.FilterColumn.CustomFilters != nil { - filter.FilterColumn.CustomFilters.CustomFilter = append(filter.FilterColumn.CustomFilters.CustomFilter, &customFilter) + if filter.FilterColumn[0].CustomFilters != nil { + filter.FilterColumn[0].CustomFilters.CustomFilter = append(filter.FilterColumn[0].CustomFilters.CustomFilter, &customFilter) } else { customFilters := []*xlsxCustomFilter{} customFilters = append(customFilters, &customFilter) - filter.FilterColumn.CustomFilters = &xlsxCustomFilters{CustomFilter: customFilters} + filter.FilterColumn[0].CustomFilters = &xlsxCustomFilters{CustomFilter: customFilters} } } -- cgit v1.2.1