加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP输出excel类完整实例程序

发布时间:2023-05-25 13:08:30 所属栏目:PHP教程 来源:
导读:本文章来给各位同学详细介绍关于PHP导出excel类完整实例程序代码,这里我们使用了phpExcel插件,大家使用前先去下载一个phpExcel插件.php exeel.class.php文件,代码如下:<?php /** * Simple excel generating from PH

本文章来给各位同学详细介绍关于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 heade

 * @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(); 

*/ 

?> 

注意,我们把上面的代码分别保存成两个文件再进行操作.

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!