用PHPExcel写入Excel文件

那么,我想用一个PHP脚本来写一个Excel文件。 实际上,当用户提交表单时,我们会得到邮件和当前date,以便将其放入Excel中。

邮件必须在一列,date也一样。

所以这是我的forms(一个经典forms):

<form action="mail.php" method="POST"> <label for="name">Nom*<br /> <input id="name" type="text" name="Nom" /> </label><br /><br /> <label for="mail">Mail*<br /> <input id="mail" type="email" name="Email" /> </label><br /><br /> <label for="tel">Téléphone*<br /> <input id="tel" type="text" name="Téléphone" /> </label><br /><br /> <label for="comment">Commentaire*<br /> <textarea id="comment" type="text" name="Commentaires"> </textarea> </label><br /><br /> <input type="submit" value="Envoyer" /> </form> 

而我的mail.php,所以这里是我使用PHPExcel类:

 <?php /** Error reporting */ error_reporting(E_ALL); /** PHPExcel */ include './Classes/PHPExcel.php'; /** PHPExcel_Writer_Excel2007 */ include 'PHPExcel/Writer/Excel2007.php'; include './Classes/PHPExcel/IOFactory.php'; /* Set the variables */ $mail = $_POST['Email']; // Line number $ligne = 1; // Excel object $fichier = new PHPExcel(); $fichier->getProperties()->setCreator("Don't know"); //Set the size $fichier->getActiveSheet()->getColumnDimension('A')->setWidth(30); $fichier->getActiveSheet()->getColumnDimension('B')->setWidth(30); $fichier->setActiveSheetIndex(0); $feuille = $fichier->getActiveSheet(); function writeExcel($objExcel, $sheet, $email){ $sheet->SetCellValue('A'.$ligne, $email); $sheet->SetCellValue('B'.$ligne, date("Ymd H:i")); $objWriter = new PHPExcel_Writer_Excel2007($objExcel); $objWriter->save(str_replace('.php', '.xlsx', __FILE__)); $ligne++; } writeExcel($fichier, $feuille, $mail); ?> 

我认为这是行号是一个问题,我不知道如何组织我的代码。 每次用户提交表格,我们把他的邮件(单元格A1)和当前date(单元格B1),下一个邮件必须在A2单元格等…

我不知道你是否知道我的意思是^^

编辑随着评论我修改了我的代码! 但它是一样的^^

 <?php /** Error reporting */ error_reporting(E_ALL); /** PHPExcel */ include './Classes/PHPExcel.php'; /** PHPExcel_Writer_Excel2007 */ include 'PHPExcel/Writer/Excel2007.php'; include './Classes/PHPExcel/IOFactory.php'; /* Set the variable */ $mail = $_POST['Email']; // Load file if it doesn't exists if (file_exists("mail.xlsx")) { $fichier = PHPExcel_IOFactory::load("mail.xlsx"); } else { $fichier = new PHPExcel(); } // Line number $ligne = $fichier->getActiveSheet()->getHighestRow() + 1; // Excel object $fichier->getProperties()->setCreator("Don't know"); //Set the size $fichier->getActiveSheet()->getColumnDimension('A')->setWidth(30); $fichier->getActiveSheet()->getColumnDimension('B')->setWidth(30); $fichier->setActiveSheetIndex(0); $feuille = $fichier->getActiveSheet(); // Line number global $ligne = $fichier->getActiveSheet()->getHighestRow() + 1; function writeExcel($objExcel, $sheet, $email){ $sheet->SetCellValue('A'.global $ligne, $email); $sheet->SetCellValue('B'.global $ligne, date("Ymd H:i")); $objWriter = new PHPExcel_Writer_Excel2007($objExcel); $objWriter->save(str_replace('.php', '.xlsx', __FILE__)); global $ligne++; } writeExcel($fichier, $feuille, $mail); ?> 

最后编辑(我希望)好吧,它的工作:D

这是我的代码:

 <?php /** Error reporting */ error_reporting(E_ALL); /** PHPExcel */ include './Classes/PHPExcel.php'; /** PHPExcel_Writer_Excel2007 */ include 'PHPExcel/Writer/Excel2007.php'; include './Classes/PHPExcel/IOFactory.php'; /* Set the variable */ $mail = $_POST['Email']; // Load file if it doesn't exists if (file_exists('mail.xlsx')) { $objExcel = PHPExcel_IOFactory::load('mail.xlsx'); } else { $objExcel = new PHPExcel(); } $objExcel->getProperties()->setCreator("Don't know"); //Set the size $objExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30); $objExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30); $objExcel->setActiveSheetIndex(0); $sheet = $objExcel->getActiveSheet(); // Line number $line = $objExcel->getActiveSheet()->getHighestRow() + 1; /* This function write in the Excel file. Note that the variables are passed by reference. */ function writeExcel(&$objExcel, &$sheet, $email, &$line){ $sheet->SetCellValue('A'.$line, $email); $sheet->SetCellValue('B'.$line, date("Ymd H:i")); $objWriter = new PHPExcel_Writer_Excel2007($objExcel); $objWriter->save(str_replace('.php', '.xlsx', __FILE__)); } writeExcel($objExcel, $sheet, $mail, $line); ?> 

首先你需要了解PHP中的variables作用域 。 正如评论中指出的,这是你的主要问题所在。

您还需要详细阅读如何使用global关键字,因为您明显误解了这一点。 那么…我真的build议不要使用它,因为它通常被认为是一件坏事
我build议您使用名为pass by reference的技术来代替第一个注释的问题。

最后,请用英文写你的代码。 不仅是为了我们的缘故,那些试图帮助你的人,也是为了你自己(和雇主)的缘故。 用一种你不明白的语言来看variables和函数的名字,会严重阻碍其理解代码的能力,从而增加出现错误的可能性。 总是假设其他人需要查看和理解你的代码!