1

我有一个上传页面供用户上传 excel 文件,这是任务请求类型的一部分。我正在尝试拥有它,因此当提交任务时,您可以单击一个链接,该链接将显示他们上传的 excel 文件的 html 表。PHP-excel-reader 可以完美运行,但它不支持 xlsx 文件。我正在查看 PHPExcel,但不太明白我如何获取这些输出并从中制作一个 html 表格。我也担心我无法在 PHP 中获得 ZipArchive 支持。

有谁知道他们将 PHPExcel 示例转换为 html 表的示例?

编辑:

以下代码运行良好。它在脚本运行时创建一个新文件。我不太清楚如何正确重命名文件。目前它正在将包含以下代码的实际 phpexcel.php 文件重命名为 phpexcel.htm。例如,我想取的名称$inputFileName并将其重命名exceluploads/Book7.htm为。我不确定它是否像更改一样简单,$objWriter->save(path/name.htm);但这不起作用,我收到:

Warning: fopen(/exceluploads/Book7.htm) [function.fopen]: failed to open stream: No such file or directory in /var/www/Classes/PHPExcel/Writer/HTML.php on line 164

Fatal error: Uncaught exception 'Exception' with message 'Could not open file /exceluploads/Book7.htm for writing.'

代码:

    <?php

    /** Error reporting */
    error_reporting(E_ALL);

    /** Include PHPExcel */
    require_once dirname(__FILE__) . '/Classes/PHPExcel.php';


    // Create new PHPExcel object
    echo date('H:i:s') , " Create new PHPExcel object" , PHP_EOL;
    $objPHPExcel = new PHPExcel();

    $inputFileName = 'exceluploads/Book7.xlsx';
    $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

    echo date('H:i:s') , " Write to HTML format" , EOL;
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');
    $objWriter->setSheetIndex(0);
    //$objWriter->setImagesRoot('http://www.example.com');
    $objWriter->save(str_replace('.php', '.htm', __FILE__));

    echo date('H:i:s') , " File written to " , str_replace('.php', '.htm', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;


    // Echo memory peak usage
    echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;

    // Echo done
    echo date('H:i:s') , " Done writing file" , EOL;
    echo 'File has been created in ' , getcwd() , EOL;

    ?>
4

1 回答 1

10

要读取文件:

$inputFileName = 'example.xls';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

要写入文件:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');
$objWriter->save('example.html');
于 2013-02-18T16:47:51.693 回答