Ho una tabella HTML che visualizza righe sugli utenti sul sistema. Queste righe sono scritte anche in un foglio di calcolo Excel che è scaricabile. Esattamente le stesse informazioni vengono inviate al foglio di calcolo:
$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=' '; } else{ $sp_amnt=$amnt; if(is_numbersc($amnt)){ $amnt='£'.$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');
La tabella HTML esce correttamente, ma il foglio di lavoro manca le righe.
Tabella 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 |
Tabella dei fogli di calcolo:
Paula Ilott | [email protected] | 087xxxxxx | 04-04-2016 | | | | | | | | | --------------------------------------------------------------- Nicolette Middleton | [email protected] | +44xxxxxxxxx | 11-02-2016 | | 0 | | | | | 31-03-2016 | 31-03-2017 |
Sono completamente sconcertato.
Come emissione separata, l'importo del pagamento è sempre "0" nel foglio di calcolo (è 53.00 nell'esempio precedente), ma cercherò che una volta che questa discrepanza sia stata risolta.
Ho riscritto il codice e sembra funzionare adesso.
Sono onestamente in perdita per vedere cosa è stato sbagliato.
Il codice riportto sopra non era proprio quello che avevo come faccio un po 'di modifica per rendere la questione più chiara. E 'stato originariamente in HTML con <? Php echo $ name;?> Invece di utilizzare echo' <td> '. $ Name.' </ Td> '; come ho fatto sopra.
Ecco come ha visto il codice originale:
$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=' '; } else{ $sp_amnt=$amnt; if(is_numbersc($amnt)){ $amnt='£'.$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>';
Mi dispiace se ho sprecato tempo di nessuno su questo; Avrei dovuto provare il codice modificato prima di inviarla.