ほぼ備忘録
日本では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;
}
}