2017-09-29 1 views
1

je peux mettre = MAX (K2, L2, M2, O2, P2, Q2, N2) dans la cellule F2 avec un xlsxwriter pas de problème, mais je ne peux pas l'obtenir pour changer pour chaque ligne (ie = MAX (K2, L2, M2, O2, P2, Q2, N2) dans la cellule F2)PHP pour ajouter une formule à une colonne dans Excel avec xlsxwriter

donc si j'avais mille lignes il irait à (ie = MAX (K1000, L1000, M1000, O1000, p10002, Q2, N1000) en F1000 cellulaire) (bestprice est rangée F)

cela est le code i ai est en PHP 5.3.24

...

$resulted[$y] = array('ISBN' => $isbn, 
        'Quantity' => $qty, 
        'Title' => $shortTitle, 
        'ItemAmount'=>$amount, 
        'Best'=>$best, 
        'BestPrice'=> '=MAX(K2,L2,M2,O2,P2,Q2,N2)', 
        'Difference'=>'=E-H', 
        'AvaQty'=>$AvaQty, 
        'LastDate'=>$LastDate, 
        'LastPrice'=>$LastPrice, 
             ); 
$y++; 
} 


$header = array('ISBN' => 'integer', 
        'Quantity' => 'integer', 
        'Title' => 'string', 
        'Item_Amount'=>'price', 
        'Best' =>'string', 
        'BestPrice'=> 'price', 

        'Difference'=>'price', 

        'AvaQty'=>'integer', 
        'LastDate'=>'date', 
        'LastPrice'=>'price', 


        ); 

$col_options=array('widths'=> array(40, 10,40,10)); 
$writer = new XLSXWriter(); 

$writer->writeSheetHeader('Name', $header, $col_options); 
foreach($resulted as $row) 
$writer->writeSheetRow('Name', $row); 
$writer->writeToFile("../My".$tracking .".xlsx"); 

Répondre

1

Vous avez juste besoin d'utiliser une variable pour suivre vos numéros de ligne. En fonction de ce que $y est, vous pouvez être en mesure d'utiliser cela. Sinon, quelque chose comme cela fonctionnera:

$y = 0; 
$row = 2; 
foreach($book_list as $book){ //Assuming you have some kind of book list you're iterating over... 
    //Doing some stuff (e.g. setting those variables you use in the array) 

    $resulted[$y] = array('ISBN' => $isbn, 
     'Quantity' => $qty, 
     'Title' => $shortTitle, 
     'ItemAmount'=>$amount, 
     'Best'=>$best, 
     'BestPrice'=> "=MAX(K{$row},L{$row},M{$row},O{$row},P{$row},Q{$row},N{$row})", //Note the change in this line. 
     'Difference'=>'=E-H', 
     'AvaQty'=>$AvaQty, 
     'LastDate'=>$LastDate, 
     'LastPrice'=>$LastPrice, 
    ); 
    $y++; 
    $row++; 
} 

Je pense que vous serez en mesure d'utiliser $y pour cela au lieu d'une variable séparée, en supposant qu'il est juste un compteur 0 indexées, vous pouvez faire quelque chose comme $row = $y+2 à le début de l'itération de la boucle. Peu importe, cela devrait vous pointer dans la bonne direction