単純に選択した値ではなく、セルのドロップダウンから値をすべて取得する必要がある場合は、ドロップダウン自体を読む必要があります。これはデータ検証オブジェクトです。
$objValidation = $objPHPExcel->getActiveSheet()
->getCell('B1')
->getDataValidation();
が
あなたは、その後getType()
、getOperator()
、getFormula1()
とgetFormula2()
のようなメソッドを使用してそのデータ検証のためのルールを読むことができるデータの検証オブジェクトを返します。ドロップダウンがセルB1にあると仮定すると
....すべてのデータ検証がドロップダウンではないことに注意してください。ドロップダウンリストの種類はPHPExcel_Cell_DataValidation::TYPE_LIST
です。また、計算エンジンを使用して、スプレッドシートの他の場所のデータから導出されたリストを作成するために使用された式を評価する必要があります。また
それはあなたの質問からははっきりしないので、それはあなたが約求めているオートフィルタのドロップダウンである可能性があります。
$autoFilter = $objPHPExcel->getActiveSheet()
->getAutoFilter();
この場合も、各列のフィルタ規則にアクセスするための一連の方法があります。
$autoFilter->getColumn('C');
はそのオートフィルタのためのルールの定義を提供するgetFilterType()
とgetRules()
のような方法で、列C
ためオートフィルタルールを返します。
10autofilter-selection-display.php
のようなオートフィルタの例では、自動フィルタの定義方法を示しています。便利なshowHideRows()
メソッドもあります。これらのルールに一致する行を表示/非表示するフィルタを使用できます。
返信ありがとうございますが、まだドロップダウンリストから値を抽出できません。getOperator()、getFormula1 ()、getFormula2()、getShowDropDown()などはありませんが、これはすべて私が必要とするデータに焦点を当てているわけではありません。 – jision
あなたが読もうとしているオートフィルターだとしますが(それでもそれは明らかになっていません)、MS Excelはそれを提供していないのは残念です。現在適用されているフィルタ.... showHideRulesを使用してフィルタを適用する場合は、行が隠されているかどうかを調べ、その情報を使用して値のリストを作成できます –