未验证 提交 9b7d8463 编写于 作者: xurime's avatar xurime 提交者: GitHub

Merge pull request #638 from yuemanxilou/master

avoid duplicate filter database in workbook defined name
......@@ -281,28 +281,38 @@ func (f *File) AutoFilter(sheet, hcell, vcell, format string) error {
formatSet, _ := parseAutoFilterSet(format)
var cellStart, cellEnd string
cellStart, err = CoordinatesToCellName(hcol, hrow)
if err != nil {
if cellStart, err = CoordinatesToCellName(hcol, hrow); err != nil {
return err
}
cellEnd, err = CoordinatesToCellName(vcol, vrow)
if err != nil {
if cellEnd, err = CoordinatesToCellName(vcol, vrow); err != nil {
return err
}
ref := cellStart + ":" + cellEnd
ref, filterDB := cellStart+":"+cellEnd, "_xlnm._FilterDatabase"
wb := f.workbookReader()
sheetID := f.GetSheetIndex(sheet)
filterRange := fmt.Sprintf("%s!%s", sheet, ref)
d := xlsxDefinedName{
Name: "_xlnm._FilterDatabase",
Name: filterDB,
Hidden: true,
LocalSheetID: intPtr(f.GetSheetIndex(sheet)),
Data: fmt.Sprintf("%s!%s", sheet, ref),
LocalSheetID: intPtr(sheetID),
Data: filterRange,
}
if wb.DefinedNames != nil {
wb.DefinedNames.DefinedName = append(wb.DefinedNames.DefinedName, d)
} else {
if wb.DefinedNames == nil {
wb.DefinedNames = &xlsxDefinedNames{
DefinedName: []xlsxDefinedName{d},
}
} else {
var definedNameExists bool
for idx := range wb.DefinedNames.DefinedName {
definedName := wb.DefinedNames.DefinedName[idx]
if definedName.Name == filterDB && *definedName.LocalSheetID == sheetID && definedName.Hidden {
wb.DefinedNames.DefinedName[idx].Data = filterRange
definedNameExists = true
}
}
if !definedNameExists {
wb.DefinedNames.DefinedName = append(wb.DefinedNames.DefinedName, d)
}
}
refRange := vcol - hcol
return f.autoFilter(sheet, ref, refRange, hcol, formatSet)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册