zoukankan      html  css  js  c++  java
  • php导出execl文件

    用得这个方式,会有乱码还没有解决

    <?php
    include("config.php");//包含连接数据库文件
    $strSql="select * from booklist";
    $result=mysql_query($strSql);
    // include the php-excel class
    require (dirname (__FILE__) . "/class-excel-xml.inc.php");//包含类文件

    // create a dummy array
    $doc = array (
    1 => array ("序号", "书名", "等级"),//列表名
    );


    //print_r($result);

    //$data = array(
    //1 => array ('id', "书名"),
    //);
    while($row=mysql_fetch_array($result))
    {
    array_push($doc,array($row['bookid'], $row['bookname'], $row['booklevel']));//循环出列表数据
    }

    // generate excel file
    $xls = new Excel_XML;
    $xls->addArray ( $doc );
    $xls->generateXML ("mytest");

    ?>

    <!--以下是包含的类文件,整理在一起了,用得时候分开用-->

    <?php

    /**
    * Simple excel generating from PHP5
    *
    * This is one of my utility-classes.
    *
    * The MIT License
    *
    * Copyright (c) 2007 Oliver Schwarz
    *
    * Permission is hereby granted, free of charge, to any person
    * obtaining a copy of this software and associated documentation
    * files (the "Software"), to deal in the Software without
    * restriction, including without limitation the rights to use,
    * copy, modify, merge, publish, distribute, sublicense, and/or
    * sell copies of the Software, and to permit persons to whom the
    * Software is furnished to do so, subject to the following
    * conditions:
    *
    * The above copyright notice and this permission notice shall be
    * included in all copies or substantial portions of the Software.
    *
    * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
    * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
    * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
    * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    * OTHER DEALINGS IN THE SOFTWARE.
    *
    * @package Utilities
    * @author Oliver Schwarz <oliver.schwarz@gmail.com>
    * @version 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>
    * @version 1.0
    *
    * @todo Add error handling (array corruption etc.)
    * @todo Write a wrapper method to do everything on-the-fly
    */
    class Excel_XML
    {

    /**
    * Header of excel document (prepended to the rows)
    *
    * Copied from the excel xml-specs.
    *
    * @access private
    * @var string
    */
    private $header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?\>
    <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 excel document (appended to the rows)
    *
    * Copied from the excel xml-specs.
    *
    * @access private
    * @var string
    */
    private $footer = "</Workbook>";

    /**
    * Document lines (rows in an array)
    *
    * @access private
    * @var array
    */
    private $lines = array ();

    /**
    * Worksheet title
    *
    * Contains the title of a single worksheet
    *
    * @access private
    * @var string
    */
    private $worksheet_title = "Table1";

    /**
    * Add a single row to the $document string
    *
    * @access private
    * @param array 1-dimensional array
    * @todo Row-creation should be done by $this->addArray
    */
    private function addRow ($array)
    {

    // initialize all cells for this row
    $cells = "";

    // foreach key -> write value into cells
    foreach ($array as $k => $v):

    $cells .= "<Cell><Data ss:Type=\"String\">" . utf8_encode($v) . "</Data></Cell>\n";

    endforeach;

    // transform $cells content into one row
    $this->lines[] = "<Row>\n" . $cells . "</Row>\n";

    }

    /**
    * Add an array to the document
    *
    * This should be the only method needed to generate an excel
    * document.
    *
    * @access public
    * @param array 2-dimensional array
    * @todo Can be transfered to __construct() later on
    */
    public function addArray ($array)
    {

    // run through the array and add them into rows
    foreach ($array as $k => $v):
    $this->addRow ($v);
    endforeach;

    }

    /**
    * Set the worksheet title
    *
    * Checks the string for not allowed characters (:\/?*),
    * cuts it to maximum 31 characters and set the title. Damn
    * why are not-allowed chars nowhere to be found? Windows
    * help's no help...
    *
    * @access public
    * @param string $title Designed title
    */
    public function setWorksheetTitle ($title)
    {

    // strip out special chars first
    $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title);

    // now cut it to the allowed length
    $title = substr ($title, 0, 31);

    // set title
    $this->worksheet_title = $title;

    }

    /**
    * Generate the excel file
    *
    * Finally generates the excel file and uses the header() function
    * to deliver it to the browser.
    *
    * @access public
    * @param string $filename Name of excel file to generate (...xls)
    */
    function generateXML ($filename)
    {

    // deliver header (as recommended in php manual)
    header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
    header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");

    // print out document to the browser
    // need to use stripslashes for the damn ">"
    echo stripslashes ($this->header);
    echo "\n<Worksheet ss:Name=\"" . $this->worksheet_title . "\">\n<Table>\n";
    echo "<Column ss:Index=\"1\" ss:AutoFitWidth=\"0\" ss:Width=\"110\"/>\n";
    echo implode ("\n", $this->lines);
    echo "</Table>\n</Worksheet>\n";
    echo $this->footer;

    }

    }

    ?>

  • 相关阅读:
    67. Add Binary
    66. Plus One
    64. Minimum Path Sum
    63. Unique Paths II
    How to skip all the wizard pages and go directly to the installation process?
    Inno Setup打包之先卸载再安装
    How to change the header background color of a QTableView
    Openstack object list 一次最多有一万个 object
    Openstack 的 Log 在 /var/log/syslog 里 【Ubuntu】
    Git 分支
  • 原文地址:https://www.cnblogs.com/zfang/p/2683515.html
Copyright © 2011-2022 走看看