自动过滤器

  1. func (f *File) AutoFilter(sheet, hcell, vcell, format string) error

根据给定的工作表名、单元格坐标区域和条件格式创建自动过滤器。Excel 中的自动过滤器可以对一些简单的二维数据数据进行数据筛选。

例1,在名称为 Sheet1 的工作表 A1:D4 区域创建自动过滤器:

创建自动过滤器

  1. err := f.AutoFilter("Sheet1", "A1", "D4", "")

例2,在名称为 Sheet1 的工作表 A1:D4 区域创建带有格式条件的自动过滤器:

  1. err := f.AutoFilter("Sheet1", "A1", "D4", `{"column":"B","expression":"x != blanks"}`)

参数 column 指定了自动过滤器在过滤范围内的基准列。 Excelize 暂不支持自动过滤器的计算,在设置过滤条件后,如果需要隐藏任何不符合过滤条件的行,可以使用 SetRowVisible() 设置行的可见性。

为列设置过滤条件,参数 expression 用于指定过滤条件运算,支持下列运算符:

  1. ==
  2. !=
  3. >
  4. <
  5. >=
  6. <=
  7. and
  8. or

一个表达式可以包含一个或两个由 andor 运算符分隔的语句。例如:

  1. x < 2000
  2. x > 2000
  3. x == 2000
  4. x > 2000 and x < 5000
  5. x == 2000 or x == 5000

可以通过在表达式中使用空白或非空白值来实现空白或非空白数据的过滤:

  1. x == Blanks
  2. x == NonBlanks

Office Excel 还允许一些简单的字符串匹配操作:

  1. x == b* // 以 b 开始
  2. x != b* // 不以 b 开始
  3. x == *b // 以 b 结尾
  4. x != *b // 不以 b 结尾
  5. x == *b* // 包含 b
  6. x != *b* // 不包含 b

我们还可以使用 * 来匹配任何字符或数字,用 ? 匹配任何单个字符或数字。除此之外,Office Excel 的自动过滤器不支持其他正则表达式的关键字。 Excel 的正则表达式字符可以使用 ~ 进行转义。

上述示例中的占位符变量 x 可以被任何简单的字符串替换。实际的占位符名称在内部被忽略,所以以下所有表达式的效果都是等同的:

  1. x < 2000
  2. col < 2000
  3. Price < 2000