本文章来给各位同学详细介绍关于PHP导出excel类完整实例程序代码,这里我们使用了phpExcel插件,大家使用前先去下载一个phpExcel插件.
php exeel.class.php文件,代码如下:
- <?php
 - /**
 - * Simple excel generating from PHP5
 - *
 - * @package Utilities
 - * @license http://www.opensource.org/licenses/mit-license.php
 - * @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.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;
 - }
 - }
 - ?>
 
excel.class.php文件,代码如下:
- <?php
 - /*功能:导出excel类
 - *时间:2012年8月16日
 - *作者:565990136@qq.com
 - */
 - class myexcel{
 - private $filelds_arr1=array();
 - private $filelds_arr2=array();
 - private $filename;
 - // load library
 - function __construct($fields_arr1,$fields_arr2,$filename='test'){
 - $this->filelds_arr1=$fields_arr1;
 - $this->filelds_arr2=$fields_arr2;
 - $this->filename=$filename;
 - }
 - function putout(){
 - require 'php-excel.class.php';
 - $datavalue=$this->filelds_arr2;
 - $newdata[0]=$this->filelds_arr1;
 - $arrcount=count($datavalue);
 - for($i=1;$i<=$arrcount;$i++){
 - $newdata[$i]=array_values($datavalue[$i-1]);
 - }
 - $filename=$this->filename;
 - $xls = new Excel_XML('UTF-8', false, 'My Test Sheet');
 - $xls->addArray($newdata);
 - $xls->generateXML($filename);
 - }
 - }
 - /*
 - **用法示例(注意导出的文件名只能用英文)
 - $asdasd=new myexcel(array('姓名','电话'),array(array('贾新明','13521530320')),'abc');
 - $asdasd->putout();
 - */
 - ?>
 
注意,我们把上面的代码分别保存成两个文件再进行操作.
新闻热点
疑难解答