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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM