PHP将Excel数据转换为3D数组

php excel multidimensional-array

60 观看

1回复

96 作者的声誉

我有一个Excel文件,其数据是3D数组。

在此处输入图片说明

我正在使用PHPExcel对象将数据返回到3d数组中。但是我只能返回一个二维数组。

    $objPHPExcel = PHPExcel_IOFactory::load($file);
    $cell_collection = $objPHPExcel->getActiveSheet()->getCellCollection();
    foreach ($cell_collection as $cell) {
        $column = $objPHPExcel->getActiveSheet()
        ->getCell($cell)
        ->getColumn();
        $row = $objPHPExcel->getActiveSheet()
        ->getCell($cell)
        ->getRow();
        $data_value = $objPHPExcel->getActiveSheet()
        ->getCell($cell)
        ->getValue();
        if ($row == 1) {
            $header[$row][$column] = $data_value;
        } else {
            $arr_data[$row][$column] = $data_value;
        }
  }

我如何返回这样的结果数组:

$res = array(
    [2]=>array(
        [A] => A,//column A
        [B] =>array([1]=>'red',[2]=>'pink',[3]=>'purple')
     ),
    [3]=>array(
        [A] => B,//column B
        [B] =>array([1]=>'white',[2]=>'blue',[3]=>'black')
     ),
);

任何人都知道如何修改代码以返回预期的结果吗?任何答案将不胜感激!

作者: Tedxxxx 的来源 发布者: 2017 年 9 月 15 日

回应 1


1

434 作者的声誉

决定

我不是php程序员,因此未遵守此代码。在这里,我添加了代码以生成您期望的数组。它可以帮助您解决问题。我认为$ column是像A,B .....这样的列值

 $i = 1;
 $i_str = "";
 $res = array();
 foreach ($cell_collection as $cell) {

        $column = $objPHPExcel->getActiveSheet()->getCell($cell)->getColumn();
        $row = $objPHPExcel->getActiveSheet()->getCell($cell)->getRow();
        $data_value = $objPHPExcel->getActiveSheet()->getCell($cell)->getValue();

        if ($row == 1) {
            $header[$row][$column] = $data_value;
        } else {

            if($column == 'A' && $data_value != ""){
                $i++;
                $i_str = (string) $i;
                $res[$i_str]['A'] = $data_value;
                $res[$i_str]['B'] = array();

            }
            else if($column == 'B'){
                $len = (string) (count($res[$i_str]['B']) + 1);
                $res[$i_str]['B'][$len] = $data_value;

            }

        }
  }

  print_r($res) // here you will get your expected array
作者: Tushar Ghosh 发布者: 2017 年 9 月 15 日
32x32