Skip to content

Commit c89d842

Browse files
committed
Init auto filter support, relate issue qax-os#59.
1 parent c5dc632 commit c89d842

6 files changed

+486
-3
lines changed

excelize_test.go

+52
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,19 @@ func TestSheetVisibility(t *testing.T) {
477477
}
478478
}
479479

480+
func TestRowVisibility(t *testing.T) {
481+
xlsx, err := OpenFile("./test/Workbook_2.xlsx")
482+
if err != nil {
483+
t.Log(err)
484+
}
485+
xlsx.HideRow("Sheet3", 2)
486+
xlsx.UnhideRow("Sheet3", 2)
487+
err = xlsx.Save()
488+
if err != nil {
489+
t.Log(err)
490+
}
491+
}
492+
480493
func TestCopySheet(t *testing.T) {
481494
xlsx, err := OpenFile("./test/Workbook_2.xlsx")
482495
if err != nil {
@@ -541,6 +554,45 @@ func TestAddComments(t *testing.T) {
541554
}
542555
}
543556

557+
func TestAutoFilter(t *testing.T) {
558+
xlsx, err := OpenFile("./test/Workbook_2.xlsx")
559+
if err != nil {
560+
t.Log(err)
561+
}
562+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", ``)
563+
t.Log(err)
564+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x != blanks"}`)
565+
t.Log(err)
566+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x == blanks"}`)
567+
t.Log(err)
568+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x != nonblanks"}`)
569+
t.Log(err)
570+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x == nonblanks"}`)
571+
t.Log(err)
572+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x <= 1 and x >= 2"}`)
573+
t.Log(err)
574+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x == 1 or x == 2"}`)
575+
t.Log(err)
576+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x == 1 or x == 2*"}`)
577+
t.Log(err)
578+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x <= 1 and x >= blanks"}`)
579+
t.Log(err)
580+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x -- y or x == *2*"}`)
581+
t.Log(err)
582+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x != y or x ? *2"}`)
583+
t.Log(err)
584+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x -- y o r x == *2"}`)
585+
t.Log(err)
586+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"B","expression":"x -- y"}`)
587+
t.Log(err)
588+
err = xlsx.AutoFilter("Sheet3", "D4", "B1", `{"column":"A","expression":"x -- y"}`)
589+
t.Log(err)
590+
err = xlsx.Save()
591+
if err != nil {
592+
t.Log(err)
593+
}
594+
}
595+
544596
func TestAddChart(t *testing.T) {
545597
xlsx, err := OpenFile("./test/Workbook1.xlsx")
546598
if err != nil {

rows.go

+24
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,27 @@ func (xlsx *xlsxC) getValueFrom(f *File, d *xlsxSST) (string, error) {
148148
return f.formattedValue(xlsx.S, xlsx.V), nil
149149
}
150150
}
151+
152+
// HideRow provides a function to set hidden of a single row by given worksheet index and row index. For example, hide row 3 in Sheet1:
153+
//
154+
// xlsx.HideRow("Sheet1", 2)
155+
//
156+
func (f *File) HideRow(sheet string, rowIndex int) {
157+
xlsx := f.workSheetReader(sheet)
158+
rows := rowIndex + 1
159+
cells := 0
160+
completeRow(xlsx, rows, cells)
161+
xlsx.SheetData.Row[rowIndex].Hidden = true
162+
}
163+
164+
// UnhideRow provides a function to set unhidden of a single row by given worksheet index and row index. For example, unhide row 3 in Sheet1:
165+
//
166+
// xlsx.UnhideRow("Sheet1", 2)
167+
//
168+
func (f *File) UnhideRow(sheet string, rowIndex int) {
169+
xlsx := f.workSheetReader(sheet)
170+
rows := rowIndex + 1
171+
cells := 0
172+
completeRow(xlsx, rows, cells)
173+
xlsx.SheetData.Row[rowIndex].Hidden = false
174+
}

sheet.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ func (f *File) HideSheet(name string) {
450450
content := f.workbookReader()
451451
count := 0
452452
for _, v := range content.Sheets.Sheet {
453-
if v.State != `hidden` {
453+
if v.State != "hidden" {
454454
count++
455455
}
456456
}
@@ -462,7 +462,7 @@ func (f *File) HideSheet(name string) {
462462
tabSelected = xlsx.SheetViews.SheetView[0].TabSelected
463463
}
464464
if v.Name == name && count > 1 && !tabSelected {
465-
content.Sheets.Sheet[k].State = `hidden`
465+
content.Sheets.Sheet[k].State = "hidden"
466466
}
467467
}
468468
}

0 commit comments

Comments
 (0)