使用array_push

时间:2019-01-18 13:38:17

标签: php arrays phpexcel array-push

我正在尝试存储一些特定的数组项,以便我知道要在laravel excel中设置样式的行

我想做的是每次执行array_push时都增加迭代器$rowCount,但是每当我专门为$groupItem处理array_push时,我都希望将计数存储在{{1 }}这样,我可以将样式仅应用于那些行。

$boldRows

类别1有3个产品(共4行),类别2有2个产品(共3行),从第2行开始,总共有7行。因此,我的预期结果是{{1 }}则类别行将包含2和6(因为我的计数从2开始,然后处理3个产品,所以下一个类别行在6)

我该如何正确实现?

1 个答案:

答案 0 :(得分:1)

我会认为,每次将新元素推送到数组中并跟踪要加粗的行时,您只需要增加行数即可。

$rowCount = 2; //since I have a sticky header in the excel file I start the count at 2
$boldRows = array();

foreach($prices->groups as $group){ 
    $groupItem = array(); 
    $groupItem["category_code"] = $group->category_code;
    $groupItem["category_name"] = $group->category_name; 
    $groupItem["category_description"] = $group->category_description;

    array_push($allgroupResult, $groupItem); 
    array_push($boldRows, $rowCount++);   // Store count & increment

    foreach($group->skus as $sku){
        $skuItem = array(); 
        $skuItem["identifier"] = $sku->info->identifier;

        array_push($allgroupResult, $skuItem);
        $rowCount++;    // Just increment count
    }
}

您可能需要根据行与数组的匹配方式来调整$rowCount-数组从0开始,我不知道行将如何建立。

基于PHPExcel Make first row bold和行号excel Convert A to 1 B to 2 ... Z to 26 and then AA to 27 AB to 28 (column indexes to column references in Excel)的行转换(针对PHP进行了修改),您可以使用类似...

foreach ( $boldRows as $row )   {
    $cell_name = excelColumnFromNumber($row)."1";
    $objPHPExcel->getActiveSheet()->getStyle( $cell_name )->getFont()->setBold( true );
}

function excelColumnFromNumber($column)
{
    $columnString = "";
    while ($column > 0)
    {
        $currentLetterNumber = ($column - 1) % 26;
        $columnString = chr($currentLetterNumber + 65) . $columnString;
        $column = ($column - ($currentLetterNumber + 1)) / 26;
    }
    return $columnString;
}