繁体   English   中英

用PHPExcel写入Excel文件

[英]Write in a Excel file with PHPExcel

好吧,我想使用PHP脚本在Excel文件中编写。 实际上,当用户提交表单时,我们会收到邮件和当前日期,以便将其放入Excel。

邮件必须在一栏中,日期也必须在一栏中。

这是我的表格(经典表格):

<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单元格中,依此类推...

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

编辑用注释,我修改了我的代码! 但这是一样的^^

<?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);
?>

最后编辑(我希望)好了,: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);
?>

首先,您需要了解PHP中的变量范围 如评论中所述,这是您的主要问题所在。

您还需要准确阅读如何使用global关键字,因为您显然对此有误解。 好吧...我真的建议您不要使用它,因为通常认为这是一件坏事
我建议您改用称为参考传递的技术,这是您对第一个评论的问题的答案。

最后,请, ,用英文写代码。 不仅是出于我们的缘故,还有试图帮助您的人们,后来也为了您自己(和雇主)的缘故。 以您不太了解的语言查看变量和函数名称会影响他们理解代码的能力,从而增加发生错误的可能性。 始终假设其他人将需要查看并理解您的代码!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM