diff options
author | xuri <xuri.me@gmail.com> | 2021-02-11 00:07:46 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2021-02-11 10:54:38 +0800 |
commit | 3648335d7f45d5cf204c32345f47e8938fe86bfb (patch) | |
tree | 19d431963317f82f78b063b0a90644c3f370718c /table.go | |
parent | 3783d1d01b458a56a4de6aba4a2d10605bfbc876 (diff) |
This improves compatibility for worksheet relative XML path and multi rules auto filter
Diffstat (limited to 'table.go')
-rw-r--r-- | table.go | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -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} } } |