我有一个excel文件,其中一列有下拉值。我正在使用PhpExcel,所以我需要从中读取下拉值。如何实现。
当我将行读为
时$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,NULL,TRUE,FALSE);
我只是在转储行时获取文本,我也需要下拉值。
任何帮助将不胜感激。
答案 0 :(得分:2)
如果您需要单元格下拉列表中的所有值,而不仅仅是所选值,那么您必须阅读下拉列表本身。这是一个数据验证对象。
假设下拉列表在单元格B1中:
$objValidation = $objPHPExcel->getActiveSheet()
->getCell('B1')
->getDataValidation();
将返回数据验证对象
然后,您可以使用getType()
,getOperator()
,getFormula1()
和getFormula2()
等方法阅读该数据验证的规则....请注意,并非所有数据验证都是下拉菜单;你正在为下拉列表寻找一种PHPExcel_Cell_DataValidation::TYPE_LIST
类型。如果它是从电子表格中其他地方的数据派生的,您可能还需要使用计算引擎来评估用于构建列表的公式。
或者,因为您的问题不清楚,它可能是您要问的自动过滤器下拉列表。您可以使用以下命令检索工作表的自动筛选器对象:
$autoFilter = $objPHPExcel->getActiveSheet()
->getAutoFilter();
同样,有一系列方法可以访问每列的过滤规则。
$autoFilter->getColumn('C');
将返回列C
的自动过滤规则,getFilterType()
和getRules()
等方法提供该自动过滤器的规则定义。
像10autofilter-selection-display.php
这样的自动过滤器示例显示了如何定义自动过滤器;但是还有一个有用的showHideRows()
方法,可以使用过滤器来隐藏/显示符合这些规则的行