将对象数组添加到PHPExcel模板

时间:2017-12-08 10:13:40

标签: php arrays loops object phpexcel

我正在从我的数据库中提取一个对象数组,目的是每个对象代表一个PHPExcel模板中的一行。 数据如下:

[
    {
        name: test,
        age: test,
        other_info: test,
        my_info: test
    },
    {
        name: test,
        age: test,
        other_info: test,
        my_info: test
    },
    {
        name: test,
        age: test,
        other_info: test,
        my_info: test
    },
]

我的Excel表格中的行从17开始 - 所以第一个对象将在第17行输入,数组中的第二个对象将在第18行输入,依此类推。但是,我希望添加的列不是彼此相邻的,因此很难循环。例如,第一个对象的名称字段应输入C17,而年龄字段应输入F17,而other_info字段应输入J17,my_info应输入在L17。然后将第二个对象输入相同的列,但输入下一行,依此类推。

我已尝试循环遍历数组,但这不允许我跳过列,只添加到连续的列和行;

foreach ($array as $rowArray) {
    $columnID = 'C';
    $rowID = 17;
    foreach ($rowArray as $columnValue) {
        $objPHPExcel->getActiveSheet()->setCellValue($columnID.$rowID, $columnValue);
        $rowID++;
    } 
}

有人能给我一些指导吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

$json = '[
            {
                "name": "name1",
                "age":"age1",
                "other_info":"other_info1",
                "my_info":"my_info1"
            },
            {
                "name": "name2",
                "age": "age2",
                "other_info": "other_info2",
                "my_info": "my_info2"
            }
        ]';

$phpExcelObject = $this->get('phpexcel')->createPHPExcelObject();
$cells = ['name' => 'C', 'age' => 'F', 'other_info' => 'J', 'my_info' => 'L'];
$array = json_decode($json, true);

$rowID = 17;
foreach($array as $rowArray) {
    foreach ($rowArray as $index => $columnValue) {
        $col = $cells[$index].$rowID;
        $phpExcelObject
          ->getActiveSheet()
          ->setCellValue((string)$col, $columnValue);
    }
    $rowID++;
}