PHP将Excel文件从“.xls”转换为“.xlsx”

时间:2016-03-24 10:40:13

标签: php html excel phpmailer

我正在使用 phpmailer 在一个php项目中使用excel附件发送邮件。 我对下面的代码生成的excel文件格式有疑问。

$table.='<table></table>';
    if (file_exists("EXCEL REPORT/".$subject." ".date("M-d-Y").".xls")) 
    {
        unlink("EXCEL REPORT/".$subject." ".date("M-d-Y").".xls");
        file_put_contents("EXCEL REPORT/".$subject." ".date("M-d-Y").".xls", $table); 
        sendmailatt($to,$cc,$subject." ".date("M-d-Y"),"mail",<br>REGIA","EXCEL REPORT/".$subject." ".date("M-d-Y").".xls");
    } 
    else {
       file_put_contents("EXCEL REPORT/".$subject." ".date("M-d-Y").".xls", $table); 
       sendmailatt($to,$cc,$subject." ".date("M-d-Y"),"Questo e' un invio automatico del venduto per agent.<br><br>Saluti,<br>REGIA","EXCEL REPORT/".$subject." ".date("M-d-Y").".xls");
    }

我想在发送邮件之前将附件转换为excel 2007 ... 有没有简单的方法来实现这个

2 个答案:

答案 0 :(得分:1)

PHPExcel。您可以找到有关读取和写入文件的文档here

编辑:结果不推荐使用PHPExcel,项目建议PhpOffice/PphSpreadsheet,您可以找到有关如何读写here的详细信息。

答案 1 :(得分:1)

以下是使用PHPExcel .xls转换为.xlsx的代码示例(可能不建议使用,但它仍然可以正常工作,尤其是从Excel5到Excel2007的简单转换时) :

<?php

    $xls_to_convert = 'test.xls';

    //------------------------------------------------------------------------------------

    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');

    //These four lines are the entire script
    require_once dirname(__FILE__) . '/PHPExcel/Classes/PHPExcel/IOFactory.php';
    $objPHPExcel = PHPExcel_IOFactory::load(dirname(__FILE__) . '/' . $xls_to_convert);
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save(str_replace('.xls', '.xlsx', $xls_to_convert));

    echo 'File ' . str_replace('.xls', '.xlsx', $xls_to_convert) . ' created in ' , getcwd() , EOL;

以上示例假定:

1)PHPExcel已安装到您的Web文件文件夹中(例如home/username/public_htmlxampp/htdocsvar/www等)

2)test.xls也位于同一文件夹中

3)已使用最新(最终)版本的PHPExcel 1.8进行了测试

4)代码取自PHPExcel/Examples/07reader.php

非常感谢Mark Baker用于PHPExcel和PhpSpreadsheet应用程序!