Хуудсыг ачаалж байна. Түр хүлээнэ үү.
loading...

Классууд

Баазыг MS Excel болгож гаргах
Баазыг MS EXCEL болгож гарган авахад крилл үгсийн асуудал тулгардаг. Тиймээс энэ асуудлыг шийдсэн класс танилцуулъя.
Code:
<?php
/*
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/*
   
    Filename    : export.xls.class.php
    Description    : A small light weight PHP class to allow the creation of simple xls excel spreadsheets from array data.
    Version     : 1
    Author         : Leenix
    Website        : http://www.leenix.co.uk
*/

class ExportXLS {

    private $filename;    //Гаргаж авах файлын нэр
    private $headerArray;    // Баганы нэрсийг энд хадгална
    private $bodyArray;    // Мөрийн мэдээллүүдийг хадгална
    private $rowNo = 0;    // Мөрний дугаар


    #Class constructor
    function ExportXLS($filename) {
        $this->filename = $filename;
    }


    /*
    -------------------------
    START OF PUBLIC FUNCTIONS
    -------------------------
    */

    public function addHeader($header) {
    #Accepts an array or var which gets added to the top of the spreadsheet as a header.

        if(is_array($header)) {
            $this->headerArray[] = $header;
        }
        else
        {
            $this->headerArray[][0] = $header;
        }
    }

    public function addRow($row) {
    #Бичлэгүүдийг оноож өгөх

        if(is_array($row)) {
            #check for multi dim array
            if(is_array($row[0])) {
                foreach($row as $key=>$array) {
                    $this->bodyArray[] = $array;
                }
            }
            else
            {
                $this->bodyArray[] = $row;
            }           
        }
        else
        {
            $this->bodyArray[][0] = $row;
        }
   
    }
   
    public function returnSheet() {
    # Хуудсыг нэг хувьсагчид хадгалах

        #build the xls
        return $this->buildXLS();
    }

    public function sendFile() {

        #xls файлыг бэлтгэх
        $xls = $this->buildXLS();

        #send headers
        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=".$this->filename);
        header("Content-Transfer-Encoding: binary ");

        echo $xls;

        exit;
    }


    /*
    --------------------------
    START OF PRIVATE FUNCTIONS
    --------------------------
    */

    private function buildXLS() {
    # build and return the xls
   
        #Excel BOF
        $xls = pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);

        #build headers
        if(is_array($this->headerArray)) {
            $xls .= $this->build($this->headerArray);
        }

        #build body
        if(is_array($this->bodyArray)) {
            $xls .= $this->build($this->bodyArray);
        }

        $xls .= pack("ss", 0x0A, 0x00);

        return $xls;
    }

    private function build($array) {
    #build and return the headers

        foreach($array as $key=>$row) {
            $colNo = 0;
            foreach($row as $key2=>$field) {
                if(is_numeric($field)) {
                    $build .= $this->numFormat($this->rowNo, $colNo, $field);
                }
                else
                {
                    $build .= $this->textFormat($this->rowNo, $colNo, $field);
                }

                $colNo++;
            }
            $this->rowNo++;
        }

        return $build;
    }

    private function textFormat($row, $col, $data) {
    # format and return the field as a header
        $length = strlen($data);
        $field = pack("ssssss", 0x204, 8 + $length, $row, $col, 0x0, $length);
        $field .= $data;

        return $field;
    }
       

    private function numFormat($row, $col, $data) {
    # format and return the field as a header
            $field = pack("sssss", 0x203, 14, $row, $col, 0x0);
            $field .= pack("d", $data);
       
        return $field;
    }
}
?>


Ашиглах жишээ:

Code:
<?php
/*

A quick script to demo the use of the export-xls.class.php script.

*/


#include the export-xls.class.php file
require('export-xls.class.php');


$filename = 'test.xls'; // Хадгалж авах файлын нэр.

#create an instance of the class
$xls = new ExportXLS($filename);


#Баганы нэрс
#

$header = "Test Spreadsheet"; // single first col text
$xls->addHeader($header);

#Хоосон баганы нэр нэмэх
$header = null;
$xls->addHeader($header);

#add 2nd header as an array of 3 columns
$header[] = "Name";
$header[] = "Age";
$header[] = "Height";

$xls->addHeader($header);


# Жишээ мэдээлэл
#
# Уг хэсэгт мэдээж та баазаас сонгоод онооц өгнө
#

#Эхний мөр
$row[] = "Jack";
$row[] = "24";
$row[] = "6ft 5";
$xls->addRow($row);

#2 дахь мөр
$row = array();
$row[] = "Jim";
$row[] = "22";
$row[] = "5ft 5";
$xls->addRow($row);

#Дараагийн утгууд
$row = array();
$row[] = array(0 =>'Jess', 1=>'54', 2=>'4ft');
$row[] = array(0 =>'Luke', 1=>'6', 2=>'2ft');
$xls->addRow($row);


# Дараах хэлбэрээр хувьсагчид оноож өгч болно;
# $sheet = $xls->returnSheet();
#
# эсвэл
#
# Дараахь коммандаар татаж авч болно.
#
$xls->sendFile();


?>


Жич:
Шууд туршиж үзвэл ер нь их ойлгомжтой байх болно.
Үнэлэх
Нэвтрэнэ үү
Үнэлгээ (1)

Сэтгэгдэл үлдээх
Нэр
Сэтгэгдэл
Өмнөх сэтгэгдлүүд »