CakePHP: Code/Helpers/xls

Создатель Excel

Написан Cleiton Wasen aka “wasenbr”

Код помощника

<?php 

/**

* By Cleiton Wasen

* wasenbr at gmail.com

* Основано на http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8

*  

*/

class XlsHelper {

    var $helpers = array();

    /**

    * устанавливаются заголовки

    * @param $filename the xls file name

    */

    function setHeader($filename) {

        header("Pragma: public");

        header("Expires: 0");

        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

        header("Content-Type: application/force-download");

        header("Content-Type: application/octet-stream");

        header("Content-Type: application/download");;

        header("Content-Disposition: attachment;filename=$filename");

        header("Content-Transfer-Encoding: binary ");

    }

    /**

    * начинается запись в xls файл

    */

    function BOF() {

        echo pack("ssssss"0x8090x80x00x100x00x0);  

        return;

    }

    /**

    * файл заканчивается этим

    */

    function EOF() {

        echo pack("ss"0x0A0x00);

        return;

    }

    /**

    * записывается число

    * @param $Row row to write $Value (first row is 0)

    * @param $Col column to write $Value (first column is 0)

    * @param $Value number value

    */

    function writeNumber($Row$Col$Value) {

        echo pack("sssss"0x20314$Row$Col0x0);

        echo pack("d"$Value);

        return;

    }

    /**

    * записывается строка

    * @param $Row row to write $Value (first row is 0)

    * @param $Col column to write $Value (first column is 0)

    * @param $Value string value

    */

    function writeLabel($Row$Col$Value) {

        $L strlen($Value);

        echo pack("ssssss"0x204$L$Row$Col0x0$L);

        echo $Value;

    return;

    }

}

?>

Пример применения

<?php

    // Посылаем заголовок (название файла в параметре)

    $xls->setHeader('text_'.date('Y_m_d').'.xls');

    // Пишем файл

    $xls->BOF();

    $xls->writeLabel(1,0,"Student Register");

    $xls->writeLabel(2,0,"COURSENO : ");

    $xls->writeLabel(2,1,"123");

    $xls->writeLabel(3,0,"TITLE : ");

    $xls->writeLabel(3,0,"BlaBlaBla");

    $xls->writeLabel(4,0,"SETION : ");

    $xls->writeLabel(6,0,"NO");

    $xls->writeLabel(6,1,"ID");

    $xls->writeLabel(6,2,"Gender");

    $xls->writeLabel(6,3,"Name");

    $xls->writeLabel(6,4,"Lastname");

    $xls->EOF();

    exit();

?>