如何使用PHPExcel

时间:2016-06-01 12:57:36

标签: php phpexcel

我有一个excel文件,其中一列有下拉值。我正在使用PhpExcel,所以我需要从中读取下拉值。如何实现。

当我将行读为

$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,NULL,TRUE,FALSE);

我只是在转储行时获取文本,我也需要下拉值。

任何帮助将不胜感激。

1 个答案:

答案 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()方法,可以使用过滤器来隐藏/显示符合这些规则的行