2016-05-26 12 views
0

システム上のユーザーに関する行を表示するHTMLテーブルがあります。これらの行は、ダウンロード可能なExcelスプレッドシートにも書き込まれます。まったく同じ情報をスプレッドシートに送信されますスプレッドシートに書き込むときにPHPExcelが行をスキップする

$row=2; 
    $odd=''; 
    foreach($feedata as $user_data){ 
    $col=1; 
    $name=$user_data['first_name'].' '.$user_data['surname']; 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $name); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row,$user_data['email']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['phone']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['regdate']); 
    $odd=($odd=='even')?'odd':'even'; 
    echo ' 
    <tr class="<?php echo $odd;?>"> 
     <td> 
     <a href="'.$URI.'?userid='.$user_data['id'].'"> 
     '.$name.' 
     </a> 
     </td> 
     <td> 
     <a href="#self" onclick="showmailform(\''.$name.'\',\''.$user_data['email'].'\');return false;"> 
     '.$user_data['email'].' 
     </a> 
     </td> 
     <td> 
     '.$user_data['phone'].' 
     </td> 
     <td> 
     '.$user_data['regdate'].' 
     </td> 
     '; 
    for($i=2015;$i<$subscriptions;$i++){ 
     $amnt=$user_data[$i]; 
     $sp_amnt=''; 
     if(!$amnt){ 
     $amnt='&nbsp;'; 
     } 
     else{ 
     $sp_amnt=$amnt; 
     if(is_numeric($amnt)){ 
      $amnt='&pound;'.$amnt; 
     } 
     } 
     $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $sp_amnt); 
     $cellname=chrono_char($col).$row; 
     # $objPHPExcel-getStyle($cellname)->getNumberFormat()->setFormatCode($currencyFormat); 
     echo ' 
     <td>'.$amnt.' 
     </td>'; 
    } 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['paid_upto']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['paymentEA']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['paymentHWSA']); 
    $row++; 
    echo ' 
    <td>'.$user_data['paid_upto'].'</td> 
    <td>'.$user_data['paymentEA'].'</td> 
    <td>'.$user_data['paymentHWSA'].'</td> 
    </tr> 
    '; 
    } 
    echo '</table>'; 
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
    echo 'Download excel version of the report <a href="'.plugins_url('chrono_reg/tmp/').'subscriptions.xls">HERE.</a>'; 
    renderEmailForm(); 
    $excelfilename=$pldir.'tmp/subscriptions.xls'; 
    $objWriter->save($excelfilename); 
    chmod($excelfilename, 0664); 
    chown($excelfilename,'www-data'); 

HTMLテーブルが正しく出てきますが、スプレッドシートが行が欠落しています。

HTMLの表:

Paula Ilott | [email protected] | 087xxxxxx | 04-04-2016 | | | | | | | | | 
--------------------------------------------------------------- 
Damian Jesson | [email protected] | 01708 xxxx xxx | 23-05-2016 | | | | | | | | | 
--------------------------------------------------------------- 
Nicolette Middleton | [email protected] | +44xxxxxxxxxxx | 11-02-2016 | | £53.00 | | | | | 31-03-2016 | 31-03-2017 | 

スプレッドシートテーブル:私は完全に困惑してい

Paula Ilott | [email protected] | 087xxxxxx | 04-04-2016 | | | | | | | | | 
--------------------------------------------------------------- 
Nicolette Middleton | [email protected] | +44xxxxxxxxx | 11-02-2016 | | 0 | | | | | 31-03-2016 | 31-03-2017 | 

別の問題として、支払い額はスプレッドシート(​​上記の例では53.00)で常に「0」ですが、この不一致が解消されればそれを調査します。

答えて

0

コードを書き直しましたが、今すぐ動作するようです。

私は正直なところ、何が間違っていたのか分かりません。

上記のコードは、質問をより明確にするために少し編集したので、私が持っていたものではありませんでした。元々は<?php echo $ name;?>で、echo '< td>'。$ name。 </td> ';私は上記に投稿しました。ここで

は、元のコードは次のように見えたものだ。私はこの上の誰の時間を無駄にした場合

$row=2; 
$odd=''; 
foreach($feedata as $user_data){ 
    $col=1; 
    $name=$user_data['first_name'].' '.$user_data['surname']; 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $name); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row,$user_data['email']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['phone']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['regdate']); 
    $odd=($odd=='even')?'odd':'even';?> 
    <tr class="<?php echo $odd;?>"> 
    <td> 
     <a href="<?php echo $URI.'?userid='.$user_data['id'];?>"> 
     <?php echo $name;?> 
     </a> 
    </td> 
    <td> 
     <a href="#self" onclick="showmailform('<?php echo $name."','".$user_data['email'];?>');return false;"> 
     <?php echo $user_data['email'];?> 
     </a> 
    </td> 
    <td> 
     <?php echo $user_data['phone'];?> 
    </td> 
    <td> 
     <?php echo $user_data['regdate'];?> 
    </td> 
    <?php 
    for($i=2015;$i<$subscriptions;$i++){ 
    $amnt=$user_data[$i]; 
    $sp_amnt=''; 
    if(!$amnt){ 
     $amnt='&nbsp;'; 
    } 
    else{ 
     $sp_amnt=$amnt; 
     if(is_numeric($amnt)){ 
     $amnt='&pound;'.$amnt; 
     } 
    } 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $sp_amnt); 
    $cellname=chrono_char($col).$row; 
    # $objPHPExcel-getStyle($cellname)->getNumberFormat()->setFormatCode($currencyFormat); 
    echo ' 
     <td>'.$amnt.' 
     </td>'; 
    } 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['paid_upto']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['paymentEA']); 
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col++, $row, $user_data['paymentHWSA']); 
    $row++;?> 
    <td><?php echo $user_data['paid_upto'];?></td> 
    <td><?php echo $user_data['paymentEA'];?></td> 
    <td><?php echo $user_data['paymentHWSA'];?></td> 
    </tr><?php 
} 
echo '</table>'; 

申し訳ありません。私は本当にそれを転記する前に改訂されたコードをテストしていたはずです。

関連する問題