【问题标题】:PHP PEAR Spreadsheet_Excel_Writer sending an empty filePHP PEAR Spreadsheet_Excel_Writer 发送一个空文件
【发布时间】:2015-09-06 09:46:39
【问题描述】:

有人用过Pear: Spreadsheet_Excel_Writer吗?

Formatting Tutorial 列出了一个类似于我正在使用的脚本:(修剪)

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();

$worksheet =& $workbook->addWorksheet();
$worksheet->write(0, 0, "Quarterly Profits for Dotcom.Com");

$workbook->send('test.xls');
$workbook->close();
?>

到目前为止,我认为我对它的了解...
$workbook-&gt;send('test.xls'); 为 Excel 文件传输设置标题。现在,似乎没有出现任何错误,但下载的文件完全是空的(即使在十六进制编辑器中也是如此)。

所以...
$workbook 二进制文件应该写在哪里(在什么类/方法中)?还是我全都误解了?

注意:老实说,我不知道使用的是什么版本的 Spreadsheet_Excel_Writer;来源不包含这些有用的信息。
我可以告诉你版权是2002-2003;所以,从 0.1 到 0.6 的任何地方。

[编辑] 抱歉,我以为我在某处提到过这个。这是我被指派修复的其他人的脚本。

【问题讨论】:

    标签: php export-to-excel pear


    【解决方案1】:

    这里是一些示例代码:

    <?php
    require_once 'Spreadsheet/Excel/Writer.php';
    $workbook = new Spreadsheet_Excel_Writer('test.xls');
    $worksheet =& $workbook->addWorksheet('My first worksheet');
    if (PEAR::isError($worksheet)) {
        die($worksheet->getMessage());
    }
    $workbook->close();
    ?>
    

    我想对于初学者来说,给你的工作表一个名字,然后尝试直接写一个文件(不带send())。

    另外,请确保使用您调用的所有方法,使用PEAR::isError() 测试响应。

    【讨论】:

    • 感谢有关 isError 的线索。我猜我认为 PEAR 对象会像其他对象一样抛出异常。 ;)
    • Spreadsheet_Excel_Writer 是 PHP4 代码。在这种情况下,约定是 PEAR_Error。 :)
    【解决方案2】:

    不是很清楚,但我认为发送命令只创建具有正确内容类型和文件名的标题。之后您必须发送数据,例如

    $tmpDocument = '/path/to/tmp/file.xls';
    $workbook = new Spreadsheet_Excel_Writer($tmpDocument);   
    

    /* 生成 XLS 文件的代码 */

    $workbook->close();
    $workbook->send('Report.xls');
    readfile($tmpDocument);
    

    【讨论】:

      【解决方案3】:

      send() 发送缓存控制头和内容类型头,但不发送内容。 正如我从代码中理解的那样,当调用 $workbook->close() 时,内容是发送的。

      【讨论】:

        【解决方案4】:

        使用它在浏览器中下载工作表

        $workbook = new Spreadsheet_Excel_Writer(); // <-- leave parantheses empty
        $workbook->send($DownloadFileName);
        // Your fancy spreadsheet generating code
        $workbook->close();
        

        然后将其写入文件。

        $workbook = new Spreadsheet_Excel_Writer($SaveFileName);
        // Your fancy spreadsheet generating code
        $workbook->close();
        

        【讨论】:

          【解决方案5】:

          您需要将工作表命名为$worksheet =&amp; $workbook-&gt;addWorksheet();
          检查下面的代码:

          require_once 'Spreadsheet/Excel/Writer.php';
          
          //Create a workbook
          $workbook = new Spreadsheet_Excel_Writer(); //() must be empty or your downloaded file will be corrupt.
          
          // Create a worksheet 
          $worksheet =& $workbook->addWorksheet('test'); <-- You forgot to name your worksheet in your code, yours is "addWorksheet()"
          
          // The actual data 
          $worksheet->write(0, 0, 'Name'); 
          $worksheet->write(0, 1, 'Age'); 
          $worksheet->write(1, 0, 'John Smith'); 
          $worksheet->write(1, 1, 30);
          $worksheet->write(2, 0, 'Johann Schmidt');
          $worksheet->write(2, 1, 31); $worksheet->write(3, 0, 'Juan Herrera');
          $worksheet->write(3, 1, 32);
          
          // send HTTP headers 
          $workbook->send('prueba.xls');
          
          // Let's send the file
          $workbook->close();
          

          【讨论】:

            猜你喜欢
            • 2017-01-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-02
            • 1970-01-01
            • 2012-10-09
            • 2014-05-25
            • 1970-01-01
            相关资源
            最近更新 更多