Ну, я хотел бы написать файл Excel с помощью PHP-скрипта. Фактически, когда пользователь отправляет форму, мы получаем почту и текущую дату, чтобы поместить ее в Excel.Запись в файл Excel с помощью PHPExcel
Письмо должно быть в одной колонке и дате тоже.
Так что это моя форма (классическая форма):
<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("Y-m-d H:i"));
$objWriter = new PHPExcel_Writer_Excel2007($objExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
$ligne++;
}
writeExcel($fichier, $feuille, $mail);
?>
Я думаю, что это линия номер является проблемой, я не знаю, как организовать свой код. Каждый раз, когда пользователь отправляет форму, мы помещаем его почту (ячейку A1) и текущую дату (ячейку B1), а следующая почта должна быть в ячейке A2 и т. Д.
Я не знаю, если вы знаете, что я имею в виду ^^
EDIT С комментариями я изменил свой код! Но это же ^^
<?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("Y-m-d H:i"));
$objWriter = new PHPExcel_Writer_Excel2007($objExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
global $ligne++;
}
writeExcel($fichier, $feuille, $mail);
?>
ПОСЛЕДНИЙ EDIT (НАДЕЮСЬ) Хорошо это работает: 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("Y-m-d H:i"));
$objWriter = new PHPExcel_Writer_Excel2007($objExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
}
writeExcel($objExcel, $sheet, $mail, $line);
?>
Я думаю, что ваша функция должна быть функцией writeExcel (& $ objExcel, & $ sheet, $ email) {// ваш код} –
Могу ли я спросить, почему положить «&»? – Emilien
'$ ligne' выходит за пределы области внутри функции' writeExcel() ' –