【问题标题】:PHP Convert Excel File From ".xls" To ".xlsx"PHP将Excel文件从“.xls”转换为“.xlsx”
【发布时间】:2016-07-11 22:16:06
【问题描述】:

我在女巫的一个 php 项目中工作,我必须使用 phpmailer 发送带有 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... 有什么简单的方法可以实现这个

【问题讨论】:

  • 这段代码实际上并没有生成一个 excel 文件,它只是将一个 html 标记块 ($table.='&lt;table&gt;&lt;/table&gt;';) 写入一个文件,并给它一个扩展名 .xls....根本不是 Excel 文件....如果您想要任何原生 Excel 格式(BIFF、OfficeOpenXML 甚至 SpreadsheetML)的 Excel 文件,请查看一些可以编写原生文件格式的 PHP 库,例如 @987654321 @
  • 我因隐私问题替换了内容....但代码会生成一个 excel 文件。
  • 我不同意.... html 标记不是原生 Excel 文件格式;除非你在你的宇宙中的某个地方使用魔法,否则 file_put_contents() 不会将 html 标记转换为原生格式的 Excel 文件....仅仅因为你给一个文件的扩展名 .xls,不会使它成为一个 Excel 文件,并且仅仅因为 MS Excel 可以导入 html 标记,并不能使其成为 Excel 格式
  • is there any class that converts the file without actually making the code any slower 不。恐怕哈利波特之外的这个宇宙中不存在魔法
  • 所以如果需要原生的xlsx格式(也就是OfficeOpenXML格式)那么就需要看看一些写原生格式Excel的库,比如PHPExcel.....是的他们创建文件的速度会更慢(取决于您如何生成原始标记)

标签: php html excel phpmailer


【解决方案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 应用程序!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2016-06-22
    相关资源
    最近更新 更多