代码之家  ›  专栏  ›  技术社区  ›  Jonathan Lonowski

php pear电子表格Excel编写器发送空文件

  •  2
  • Jonathan Lonowski  · 技术社区  · 17 年前

    有人用过吗? 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->send('test.xls'); 为Excel文件传输设置标题。现在,似乎没有出现任何错误,但下载的文件是完全空的(即使在十六进制编辑器中)。

    所以…
    在哪里(在什么类/方法中) $workbook 应该写二进制?或者,我是不是都误解了?

    注释 :老实说,我不知道使用的是什么版本的电子表格Excel-Writer;资料来源不包括这些有用的信息。
    我可以告诉你版权是 2002-2003 ;所以,在0.1到0.6版本的任何地方。

    [ 编辑 ]对不起,我想我在某个地方提到过……这是别人的脚本,我已被指派修复。

    5 回复  |  直到 10 年前
        1
  •  3
  •   Till    17 年前

    以下是一些示例代码:

    <?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() .

        2
  •  1
  •   John R. Tipton    15 年前

    虽然不太清楚,但我认为send命令只创建具有正确内容类型和文件名的头文件。之后你必须发送数据,比如

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

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

    $workbook->close();
    $workbook->send('Report.xls');
    readfile($tmpDocument);
    
        3
  •  0
  •   gnud    17 年前

    send()发送缓存控制头和内容类型头,但不发送内容。 当调用$workbook->close()时,我从代码中了解到内容是sendt。

        4
  •  0
  •   SlidingStop    16 年前

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

    $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
  •  0
  •   LPL user462990    14 年前

    您需要将工作表命名为 $worksheet =& $workbook->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();