从excel PHP获取专栏信

时间:2015-07-27 19:52:13

标签: php phpexcel

我想收到专栏信。

takes_column(item)是一个应该返回字母的方法。这样做的原因是在我的数据库中写入rigth列。

for ($i=2;$i<=$filas;$i++){

    $_DATOS_EXCEL[$i]['item'] = $objPHPExcel->getActiveSheet()->getCell(takes_column(item).$i)->getCalculatedValue();

    $_DATOS_EXCEL[$i]['warehouse'] = $objPHPExcel->getActiveSheet()->getCell(takes_column(item).$i)->getCalculatedValue();

    $_DATOS_EXCEL[$i]['item_description'] = $objPHPExcel->getActiveSheet()->getCell(takes_column(item).$i)->getCalculatedValue();

    } 

}


function takes_column($input)
{

$row = $this->objPHPExcel->getActiveSheet()->getRowIterator(0)->current();

$cellIterator = $row->getCellIterator();

$cellIterator->setIterateOnlyExistingCells(false);

foreach ($cellIterator as $cell) {

    if ($cell->getValue() = $input){

        return $cell->getColumn();

    }
}

1 个答案:

答案 0 :(得分:1)

在 主循环之前将列名称映射到查找数组

$headingData = $objPHPExcel->getActiveSheet()
    ->rangeToArray(
        'A1:A' . $objPHPExcel->getActiveSheet()->getHighestColumn(),
        null, true, true, true
    );
$headings = array_flip($headingData[1]);

这应该给你一个类似的数组:

[
    'item' => 'A',
    'warehouse' => 'B',
    'item_description' => 'C',
]

然后,您可以在循环中对该头数组进行查找:

for ($i=2;$i<=$filas;$i++){
    $_DATOS_EXCEL[$i]['item'] = $objPHPExcel->getActiveSheet()->getCell($headings['item'].$i)->getCalculatedValue();
    $_DATOS_EXCEL[$i]['warehouse'] = $objPHPExcel->getActiveSheet()->getCell($headings['warehouse'].$i)->getCalculatedValue();
    $_DATOS_EXCEL[$i]['item_description'] = $objPHPExcel->getActiveSheet()->getCell($headings['item_description'].$i)->getCalculatedValue();
}