Code xuất dữ liệu tự động từ sql ra file excel

Thảo luận trong 'Source code' bắt đầu bởi hongoctrien, 16 Tháng mười một 2011.

  1. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Nội dung file index.php

    Mã:
    <?php
    // load library
    require 'php-excel.class.php';
     
    // create a simple 2-dimensional array
    $data = array(
    array ('Name', 'Surname'),
    array ('Hồ', 'Ngọc Triển'),
    array ('Lê', 'Chánh Còi'),
            );
     
    // generate file (constructor parameters are optional)
    $xls = new Excel_XML('UTF-8', false, 'Workflow Management');
    $xls->addArray($data);
    $xls->generateXML('Output_Report_WFM');
     
    ?>

    Nội dung file php-excel.class.php:

    Mã:
    <?php
     
    /**
    * Simple excel generating from PHP5
    *
    * @package Utilities
    * @license http://www.opensource.org/licenses/mit-license.php
    * @author Oliver Schwarz <oliver.schwarz@gmail.com>
    * [USER=1768]version[/USER] 1.0
    */
     
    /**
    * Generating excel documents on-the-fly from PHP5
    *
    * Uses the excel XML-specification to generate a native
    * XML document, readable/processable by excel.
    *
    * @package Utilities
    * @subpackage Excel
    * @author Oliver Schwarz <oliver.schwarz@vaicon.de>
    * [USER=1768]version[/USER] 1.1
    *
    * @todo Issue #4: Internet Explorer 7 does not work well with the given header
    * @todo Add option to give out first line as header (bold text)
    * @todo Add option to give out last line as footer (bold text)
    * @todo Add option to write to file
    */
    class Excel_XML
    {
     
        /**
        * Header (of document)
        * @var string
        */
            private $header = "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">";
     
            /**
            * Footer (of document)
            * @var string
            */
            private $footer = "</Workbook>";
     
            /**
            * Lines to output in the excel document
            * @var array
            */
            private $lines = array();
     
            /**
            * Used encoding
            * @var string
            */
            private $sEncoding;
           
            /**
            * Convert variable types
            * @var boolean
            */
            private $bConvertTypes;
           
            /**
            * Worksheet title
            * @var string
            */
            private $sWorksheetTitle;
     
            /**
            * Constructor
            *
            * The constructor allows the setting of some additional
            * parameters so that the library may be configured to
            * one's needs.
            *
            * On converting types:
            * When set to true, the library tries to identify the type of
            * the variable value and set the field specification for Excel
            * accordingly. Be careful with article numbers or postcodes
            * starting with a '0' (zero)!
            *
            * @param string $sEncoding Encoding to be used (defaults to UTF-8)
            * @param boolean $bConvertTypes Convert variables to field specification
            * @param string $sWorksheetTitle Title for the worksheet
            */
            public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1')
            {
                    $this->bConvertTypes = $bConvertTypes;
                $this->setEncoding($sEncoding);
                $this->setWorksheetTitle($sWorksheetTitle);
            }
           
            /**
            * Set encoding
            * @param string Encoding type to set
            */
            public function setEncoding($sEncoding)
            {
                $this->sEncoding = $sEncoding;
            }
     
            /**
            * Set worksheet title
            *
            * Strips out not allowed characters and trims the
            * title to a maximum length of 31.
            *
            * @param string $title Title for worksheet
            */
            public function setWorksheetTitle ($title)
            {
                    $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title);
                    $title = substr ($title, 0, 31);
                    $this->sWorksheetTitle = $title;
            }
     
            /**
            * Add row
            *
            * Adds a single row to the document. If set to true, self::bConvertTypes
            * checks the type of variable and returns the specific field settings
            * for the cell.
            *
            * @param array $array One-dimensional array with row content
            */
            private function addRow ($array)
            {
                $cells = "";
                    foreach ($array as $k => $v):
                            $type = 'String';
                            if ($this->bConvertTypes === true && is_numeric($v)):
                                    $type = 'Number';
                            endif;
                            $v = htmlentities($v, ENT_COMPAT, $this->sEncoding);
                            $cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n";
                    endforeach;
                    $this->lines[] = "<Row>\n" . $cells . "</Row>\n";
            }
     
            /**
            * Add an array to the document
            * @param array 2-dimensional array
            */
            public function addArray ($array)
            {
                    foreach ($array as $k => $v)
                            $this->addRow ($v);
            }
     
     
            /**
            * Generate the excel file
            * @param string $filename Name of excel file to generate (...xls)
            */
            public function generateXML ($filename = 'excel-export')
            {
                    // correct/validate filename
                    $filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);
           
                    // deliver header (as recommended in php manual)
                    header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding);
                    header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");
     
                    // print out document to the browser
                    // need to use stripslashes for the damn ">"
                    echo stripslashes (sprintf($this->header, $this->sEncoding));
                    echo "\n<Worksheet ss:Name=\"" . $this->sWorksheetTitle . "\">\n<Table>\n";
                    foreach ($this->lines as $line)
                            echo $line;
     
                    echo "</Table>\n</Worksheet>\n";
                    echo $this->footer;
            }
     
    }
     
    ?>
    Đã test, không bị lỗi font chữ.

    Nguồn: Sưu tầm
  2. Offline

    bin_kute

    • Thành Viên Mới

    Số bài viết:
    14
    Đã được thích:
    4
    Điểm thành tích:
    0
    code đó xuất ra từ mảng, bạn có thể giúp mình xuất ra từ mysql mà không lỗi font tiếng việt được chứ? cảm ơn bạn
  3. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Code trên chỉ xuất file excel ra từ mảng gán sẵn. Code dưới đây xuất ra file excel từ MySql

    Cùng thực hành luôn nhé.
    Trước hết vào phpmyadmin tạo 1 CSDL (inet_shop) gồm 1 bảng (shop_topic) có 2 trường (id, nametp). Tiến hành nhập dữ liệu.
    Đang làm đồ án sẳn up csdl mới tạo lên luôn, down file đính kèm và import vào phpmyadmin nhé.

    1. Xong phần CSDL test
    2.
    - Nội dung file php-excel.class.php giữ nguyên
    - Thay toàn bộ code trong file index.php bằng code dưới đây, trong đó mình đã chú thích rõ rồi, ở đâu không hiểu cứ gửi bài bên dưới nhé!.
    PHP:
    <?
    // load library
    require 'php-excel.class.php';
     
    //Ket noi CSDL
    $connect mysql_connect('localhost''root''');
    if(!
    $connect)
    {
        echo 
    "Kết nối dữ liệu không thành công!";
    }
    $db_selected mysql_select_db('inet_shop'$connect);
     
    //lay du lieu tu bang "shop_topic"
    $sql "SELECT * FROM shop_topic";
    $result mysql_query($sql);
     
    //Khai bao bien mang, gan tieu de
    $data = array(array('ID''Tên chủ đề')); //Them tiep neu muon lay nhieu cot hon nua
     
        
    while ( $row mysql_fetch_array$result ) )
        {
            
    //lay gia tri tu csdl gan cho mang
            
    $data[] = array ($row['id'], $row['nametp']); //Them tiep neu muon lay nhieu cot hon nua
        
    }
     
    // generate file (constructor parameters are optional)
    $xls = new Excel_XML('UTF-8'false'Sheet 1');
    $xls->addArray($data);
    $xls->generateXML(' Test_export_2mit');
     
    ?>

    Các file đính kèm:

    white.smut thích bài này.
  4. Offline

    ubuntu1

    • Thành Viên Mới

    Số bài viết:
    3
    Đã được thích:
    0
    Điểm thành tích:
    0
    cài sampp rồi mà sao k khởi động mysql để kết nối với php đc? chỉ mình cách khởi động mysql đi, hoặc có phần mềm myslq nào cũng đc.thank
  5. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Bạn khởi động xamp-control và "Star" hai dịch vụ là Apache và Mysql
    Làm việc với mysql thông qua đường dẫn http://localhost/phpmyadmin
  6. Offline

    Phan thủy

    • Thành Viên Mới

    Số bài viết:
    3
    Đã được thích:
    0
    Điểm thành tích:
    0
    thanks bác. Em đang cần cái này
    --- Nhập chung bài viết, 15 Tháng mười hai 2012 ---
    thanks bác. Em đang cần cái này
  7. Offline

    huanpro

    • Thành Viên Mới

    Số bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    0
    sao minh lam nhu vay ma thay bao loi vay
    --- Nhập chung bài viết, 29 Tháng mười hai 2012 ---
    sao minh lam nhu vay ma thay bao loi vay
    --- Nhập chung bài viết, 29 Tháng mười hai 2012 ---
    sao ban ko lam mot video cho bon minh xem voi
    --- Nhập chung bài viết, 29 Tháng mười hai 2012 ---
    sao ban ko lam mot video cho bon minh xem voi
  8. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Lỗi gì bạn cứ gửi lên để mình xem thử
  9. Offline

    lydongha

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Bạn ơi cho m hỏi.M muốn xuất ra excel thêm biểu tượng logo.nếu như m muốn tô màu nữa thì làm kiểu gì nhỉ?
  10. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Cái đó mình chưa nghĩ tới :D
  11. Offline

    lydongha

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Bạn ơi cho m hỏi.M muốn xuất ra excel thêm biểu tượng logo.nếu như m muốn tô màu nữa thì làm kiểu gì nhỉ?
  12. Offline

    linhnhi12

    • Thành Viên Mới

    Số bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    0
    Cho mình hỏi mình làm xong rồi nhưng khi chạy file exl thì nó báo lỗi này : problems came up in the following areas during load. Ai biết do đâu không chỉ mình với. Lần đầu mình chạy thì nó ra file a.html thì chạy ngon. Nhưng lần sau thì nó cho save thành file exl và lỗi.
    Thanks!
  13. Offline

    omall_marketing

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Đang tìm, tình cờ gặp ở đây.
  14. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Bạn có thể up code mình kiểm tra được chứ?
  15. Offline

    tranthanh86

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Mình làm theo hướng dẫn của bạn nhưng khi chạy file index.php màn hình chỉ xuất hiện dòng "addArray($data); $xls->generateXML(' Test_export_2mit'); ?>" ( mình mới học code). Giúp mình nhé.
  16. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Bạn gửi file code của bạn lên nhé
  17. Offline

    tranthanh86

    • Thành Viên Mới

    Số bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    0
    Gửi bạn code, bạn xem giúp mình nhé: mediafire.com/download/l5w6c4bjo1jrzbb/downexcel.zip

    Cảm ơn bạn!
  18. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    oh, bạn xem lại chứ mình test vẫn thấy ổn mà bạn
  19. Offline

    hpleduit

    • Thành Viên Mới

    Số bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    0
    Chào bạn
    bạn xem giúp mình vơi mình export ra file excel thì thành công nhưng nó bị lỗi font, và dữ liệu không đầy đủ. Bạn có thể test giúp mình với được không đây là code, database, file xuất ra nữa mediafire.com/download/4fj5cly3atrnb87/diemhs.zip
    Mail của mình: hpl.eduit@gmail.com

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí