3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPExcel でAutoFilterを設定する

Last updated at Posted at 2015-09-10

ほぼ備忘録
日本ではAutofilterを有効にする、という設定までで、条件の指定など、どうもこの手の情報が見つからず。

出来ない英語を、グーグル先生を頼りにやりましたが…最後で挫折。(未検証)
もうね、世界標準言語、日本語になれ💢って感じっすよ=>参照

フィルターを実行させるには1アクションではなくレコードごとに表示非表示の指定をしなきゃいけんのか、面倒くさくてヤメ
途中でやめて実証もできていないので参照程度に。あとは偉い人( `・∀・´)ノヨロシク

//オートフィルターの設定
$objPHPExcel->getActiveSheet()->setAutoFilter('A1:Z100');
//$objPHPExcel->getActiveSheet()->setAutoFilter(); これで全範囲になるはずだが実現せず

//カラム単位におけるオートフィルタの条件を設定
$autoFilter   = $objPHPExcel->getActiveSheet()->getAutoFilter();
$columnFilter = $autoFilter->getColumn('I');                      //I:対象のカラム

//$columnFilter -> setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_FILTER);
$columnFilter -> setFilterType(PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_CUSTOMFILTER);
$columnFilter->createRule()
  ->setRule(
    //PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL,
    PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_NOTEQUAL,
    ''  // 条件 !='' みたいな
  )
  ->setRuleType(
    PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_CUSTOMFILTER
  ); //単純フィルタじゃない場合、setRuleTypeが必要らしい


//フィルタ実行するにもメソッドが必要みたいだが、ここもわからない。

//全部フィルタリングされる->NG
//$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;
    }
}
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?