PHPExcel中文开发手册翻译版(1)

请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新

英文原版在线文档 https://github.com/PHPOffice/PHPExcel/wiki/User%20Documentation%20AutoFilters 英文doc pdf 版本下载 http://phpexcel.codeplex.com/releases/view/119187 2016年8月3日10:26:02 如下是翻译版,基于 1.8.0英文doc版本翻译 若有问题,请反馈楼主 废话一句,github的在线文档没有doc的完整,可是doc翻译+上传图片会花去不少时间,更新会比较慢,其实主要是图片也须要上传,挺麻烦的 PHPExcel AutoFilter Reference developer documentation PHPExcel developer documentation PHPExcel Function Reference developer documentation PHPExcel User Documentation - Reading Spreadsheet Files PHPExcel自动筛选参考开发文档.doc 1.目录 PHPExcel自动筛选参考开发者文档 1.目录 2.自动筛选 3.在工做表设置自动筛选区域 4.自动筛选表达式 4.1 简单的过滤器 4.1.1 匹配空白 4.2 DateGroup过滤器 4.3 自定义过滤器 4.4 动态过滤器 4.5 十大过滤器 5.执行自动筛选 5.1 应用筛选 5.2 显示过滤后的行 6.自动筛选排序 2.自动筛选 在Excel工做簿中每一个工做表能够包含一个自动筛选范围。 只有过滤后的数据显示,以知足您指定,并隐藏您不想显示的行标准的行。您能够经过多个列过滤:过滤器是累加的,这意味着每一个额外的过滤器是基于当前的过滤器上,并进一步下降了数据的子集。 当一个自动筛选应用于单元格区域,在自动筛选范围的第一行会的标题行,显示自动筛选下拉图标。它是否是实际autoFiltered数据的一部分。全部后续行是autoFiltered数据。 所以,一个自动筛选范围应始终包含标题行和一个或多个数据行(一个数据行是很没有意义的),但PHPExcel实际上并不会阻止你指定一个无心义的范围:这取决于你做为开发人员,以免这样的错误。 要肯定是否使用了滤镜,请注意在列标题中的图标。一个下拉箭头()是指过滤功能,但不适用。在MS Excel中,当你将鼠标悬停在带过滤功能启用,但没有应用列的标题,屏幕提示显示该列第一行的单元格文本,消息“(显示全部)”。 一个Filter按钮()意味着滤波器。当你将鼠标悬停在一个过滤列的标题,屏幕提示显示应用到该列的过滤器,如“等于一个红色的单元格颜色”或“超过150大”。 3.在工做表设置自动筛选区域 要在单元格范围内设置自动筛选。 $ objPHPExcel-> getActiveSheet() - > setAutoFilter(“A1:E20'); 在自动筛选范围的第一行将会是标题行,显示自动筛选下拉图标。它是否是实际autoFiltered数据的一部分。全部后续行是autoFiltered数据。所以,一个自动筛选范围应始终包含标题行和一个或多个数据行(一个数据行是毫无心义的,但PHPExcel实际上并不会阻止你指定一个无心义的范围:这取决于你做为开发人员,以免这样的错误。 若是你想整个工做表设置为自动筛选区域 $ objPHPExcel-> getActiveSheet() - > setAutoFilter( $ objPHPExcel-> getActiveSheet() - > calculateWorksheetDimension() ); 这使得过滤器,但实际上不该用任何过滤器。 4.自动筛选表达式 PHPEXcel 1.7.8介绍实际建立,读取和写入过滤表达式的能力;最初只为Excel2007中的文件,但后来的版本将其扩展到其余格式。 要应用过滤器表达式来自动筛选范围,你首先须要肯定你将要应用此过滤器的列。 $自动筛选= $ objPHPExcel-> getActiveSheet() - > getAutoFilter(); $ columnFilter = $ autoFilter-> getColumn('C'); 这将返回自动筛选列对象,而后你可使用过滤器列。 有许多不一样类型的自动筛选表达的。最经常使用的是: •简单的过滤器 •DateGroup过滤器 •自定义过滤器 •动态过滤器 •十大过滤器 这些不一样类型的任何单柱内相互排斥。不该该在同一列混合了不一样类型的过滤器。 PHPExcel不会主动阻止你这样作,但结果是不可预知的。 4.1。简单的过滤器 在MS Excel中,简单的过滤器是该列中使用的全部值的下拉列表,用户能够选择他们想要哪些显示和他们但愿经过滴答做响和取消勾选旁边的每一个选项的复选框隐藏的。 当施加滤波器,将显示包含选中的条目的行,即不包含将被隐藏的那些值的行。 要建立过滤器表达式,咱们须要经过识别过滤式启动。在这种状况下,咱们只是要指定此过滤器是一个标准的过滤器。 $ columnFilter-> setFilterType( PHPExcel_Worksheet_AutoFilter_Column :: AUTOFILTER_FILTERTYPE_FILTER ); 如今咱们已经肯定了过滤器类型,咱们能够建立一个过滤规则,并设置过滤器值: 当在建立一个PHPExcel简单的过滤器,你只须要为“选中”列中指定的值:你经过为每一个值过滤规则作到这一点。 $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, 'France' ); $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, 'Germany' ); 这就形成了两个过滤规则:列将匹配“法国”或“德”的价值观进行过滤。对于简单的过滤器,你能够建立许多规则,只要你想 简单的过滤器老是平等的比较匹配,和多个标准过滤器老是经过OR条件被链接处理。 4.1.1。匹配空白 若是你想建立一个过滤器,选择空白单元格,可使用: $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, '' ); 4.2。 DateGroup过滤器 在MS Excel,DateGroup过滤器提供了一系列的下拉过滤器选择日期值,这样你就能够在一年内指定全年或几个月,或每月内的各个天。 DateGroup筛选器仍然应用为标准过滤器类型。 $ columnFilter-> setFilterType( PHPExcel_Worksheet_AutoFilter_Column :: AUTOFILTER_FILTERTYPE_FILTER ); 在建立一个PHPExcel过滤dateGroup,您能够指定“选中”列中的值做为今年的关联数组。月,日,小时,分钟和秒。要选择一个年份和月份,你须要建立一个DateGroup规则识别所选择的年份和月份: $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, array( 'year' => 2012, 'month' => 1 ) ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DATEGROUP ); 对于关联数组的键值: • year • month • day • hour • minute • second 像标准的过滤器,过滤器DateGroup老是平等的比赛,和多个标准过滤器老是经过OR条件被链接处理。 请注意,咱们ALSE指定ruleType:从标准的过滤区分这一点,咱们明确地设置规则的类型来AUTOFILTER_RULETYPE_DATEGROUP。与标准的过滤器,咱们能够建立任意数量DateGroup过滤器。 4.3。自定义过滤器 在MS Excel,自定义过滤器容许咱们使用操做符和一个值来选择更复杂的条件。典型的例子能够是落入范围(例如-20和+20之间)内的值,或与通配符(例如用字母U开头)文本值。为了解决这个问题,他们 自定义过滤器被限制为2的规则,它们可使用任一AND或一个OR接合。 咱们经过指定滤波器类型,这个时候CUSTOMFILTER开始。 $columnFilter->setFilterType( PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER ); 而后定义咱们的规则。 下面显示了一个简单的过滤器通配符显示以字母“U”开头的全部列项。 $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, 'U*' ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER ); MS Excel使用*做为通配符匹配任何数目的字符,和?做为通配符来匹配单个字符。 “U *”至关于“用”U“开始”; “* U”等同于“与”U“结束”;和“* U *”等同于“包含了一个'U'” 若是您想对一个*或一个明确的匹配吗?字符,你能够用一个符号(〜)逃避它,因此?〜**就明确匹配*字符做为单元格的值的第二个字符,后跟任意数目的其它字符。须要转义惟一的其余字符是〜自己。 要创造条件“之间”,咱们须要定义两个规则: $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule:: AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL, -20 ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER ); $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule:: AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL, 20 ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER ); 咱们还设置了规则类型CUSTOMFILTER。 这定义了两个规则,过滤中,> = -20 OR <= 20个数字,因此咱们还须要修改链接条件,以反映而非OR。 $columnFilter->setAndOr( PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_COLUMN_ANDOR_AND ); 运营商自定义过滤器的有效集是在PHPExcel_Worksheet自动筛选列规则类定义,包括: AUTOFILTER_COLUMN_RULE_EQUAL = 'equal'; AUTOFILTER_COLUMN_RULE_NOTEQUAL = 'notEqual'; AUTOFILTER_COLUMN_RULE_GREATERTHAN = 'greaterThan'; AUTOFILTER_COLUMN_RULE_GREATERTHANOREQUAL = 'greaterThanOrEqual'; AUTOFILTER_COLUMN_RULE_LESSTHAN = 'lessThan'; AUTOFILTER_COLUMN_RULE_LESSTHANOREQUAL = 'lessThanOrEqual'; 4.4。动态过滤器 动态过滤器都是基于一个动态的比较条件,在这里咱们要对单元格值比较值是可变的,如“今天”;或者当咱们正在测试对单元格数据(例如'aboveAverage')的集合。只有一个动态滤波器能够同时施加到列。 一样,咱们经过指定滤波器类型,这个时候DYNAMICFILTER开始。 $columnFilter->setFilterType( PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER ); 当定义一个动态过滤规则,咱们没有定义的值(咱们能够简单地设置为NULL),但咱们作的指定动态过滤类别。 $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, NULL, PHPExcel_Worksheet_AutoFilter_Column_Rule:: AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER ); 咱们还设置了规则类型DYNAMICFILTER。 动态过滤器类别的有效集是在PHPExcel_Worksheet_AutoFilter_Column_Rule类中定义,而且包括: AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY = 'yesterday'; AUTOFILTER_RULETYPE_DYNAMIC_TODAY = 'today'; AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW = 'tomorrow'; AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE = 'yearToDate'; AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR = 'thisYear'; AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER = 'thisQuarter'; AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH = 'thisMonth'; AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK = 'thisWeek'; AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR = 'lastYear'; AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER = 'lastQuarter'; AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH = 'lastMonth'; AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK = 'lastWeek'; AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR = 'nextYear'; AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER = 'nextQuarter'; AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH = 'nextMonth'; AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK = 'nextWeek'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1 = 'M1'; AUTOFILTER_RULETYPE_DYNAMIC_JANUARY = 'M1'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 = 'M2'; AUTOFILTER_RULETYPE_DYNAMIC_FEBRUARY = 'M2'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3 = 'M3'; AUTOFILTER_RULETYPE_DYNAMIC_MARCH = 'M3'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4 = 'M4'; AUTOFILTER_RULETYPE_DYNAMIC_APRIL = 'M4'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5 = 'M5'; AUTOFILTER_RULETYPE_DYNAMIC_MAY = 'M5'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6 = 'M6'; AUTOFILTER_RULETYPE_DYNAMIC_JUNE = 'M6'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7 = 'M7'; AUTOFILTER_RULETYPE_DYNAMIC_JULY = 'M7'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8 = 'M8'; AUTOFILTER_RULETYPE_DYNAMIC_AUGUST = 'M8'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9 = 'M9'; AUTOFILTER_RULETYPE_DYNAMIC_SEPTEMBER = 'M9'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10 = 'M10'; AUTOFILTER_RULETYPE_DYNAMIC_OCTOBER = 'M10'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11 = 'M11'; AUTOFILTER_RULETYPE_DYNAMIC_NOVEMBER = 'M11'; AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12 = 'M12'; AUTOFILTER_RULETYPE_DYNAMIC_DECEMBER = 'M12'; AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1 = 'Q1'; AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2 = 'Q2'; AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3 = 'Q3'; AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4 = 'Q4'; AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE = 'aboveAverage'; AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE = 'belowAverage' 咱们只能够一次申请一个动态过滤规则的列。 4.5。十大过滤器 十佳过滤相似的,由于它们是基于在细胞中的实际数据值的summarisation动态过滤器。然而,与动态过滤器,你只能选择一个单选项,十佳过滤器容许您根据一些标准进行选择: •您能够识别您是否但愿顶部(最高)或底部(最低)值。 •您能够识别你但愿有多少值在过滤器选择 •您能够识别是否这应该是一个个或多个项目。 像动态过滤器,只有一个单一的十大滤波器能够同时施加到列。 咱们经过指定滤波器类型,这个时候DYNAMICFILTER开始。 $columnFilter->setFilterType( PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_TOPTENFILTER ); 而后,咱们建立规则: $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule:: AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT, 5, PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_TOPTEN_TOP ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER ); 这将在列筛选值的前5%。 要指定最低(底部2个值),咱们会指定的规则: $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule:: AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE, 5, PHPExcel_Worksheet_AutoFilter_Column_Rule:: AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_TOPTENFILTER ); 对于TOPTEN过滤器顶部/底部值/百分比选项值在PHPExcel_Worksheet_AutoFilter_Column_Rule类的全部定义,包括: AUTOFILTER_COLUMN_RULE_TOPTEN_BY_VALUE = 'byValue'; AUTOFILTER_COLUMN_RULE_TOPTEN_PERCENT = 'byPercent'; and AUTOFILTER_COLUMN_RULE_TOPTEN_TOP = 'top'; AUTOFILTER_COLUMN_RULE_TOPTEN_BOTTOM = 'bottom'; 5.执行自动筛选 当一个自动筛选在MS Excel应用,它设置隐藏/可见标志基础上,选择的标准自动筛选区域的各行的行,这样,只显示那些符合过滤条件的行。 当您设置或更改过滤器表达式,但只有当文件被保存PHPExcel不会自动执行同等功能。 5.1。应用过滤器 若是你想从脚本内执行的过滤器,你须要手动完成。您可使用自动筛选showHideRows()方法作到这一点。 $autoFilter = $objPHPExcel->getActiveSheet()->getAutoFilter(); $autoFilter->showHideRows(); 经过在行自动筛选区域循环简单的将仍然可以访问曾经排,无论它符合过滤标准与否。要选择性地只访问过滤行,你须要测试每行的可见性设置。 foreach ($objPHPExcel->getActiveSheet()->getRowIterator() as $row) { if ($objPHPExcel->getActiveSheet()->getRowDimension($row->getRowIndex())->getVisible()) { echo ' Row number - ' , $row->getRowIndex() , ' '; echo $objPHPExcel->getActiveSheet()->getCell( 'C'.$row->getRowIndex() )->getValue(), ' '; echo $objPHPExcel->getActiveSheet()->getCell( 'D'.$row->getRowIndex() )->getFormattedValue(), ' '; echo EOL; } } 6.自动筛选排序 在MS Excel中,自动筛选还容许行进行排序。此功能不支持PHPExcel。
相关文章
相关标签/搜索