今天园子刚开,先来个货顶下,后续园丁qing我会再慢慢种园子的,希望大家多来园子逛逛。

PHPExcel导出excel文件,先说下重要的参数要记住的东西

impUser() 导入方法

exportExcel($xlsName,$xlsCell,$xlsData);导出方法

PHPExcel.php  PHP主文件, 放置各种class结合核心文件

<Fatal error:Class 'ZipArchive' not found in.....  这报错的意思,是没有正常开启php.in配置里面的php_zip.dll.

其实能实现PHP_EXCEL的方法有很多, 我简单的介绍一种简单粗暴我用过的调用插件方法.

一、导入

下面介绍的是使用TP3.2.3框架+PHP_EXCEL 来导出数据

1:在php.ini配置文件中开启扩展, php_zip.dll

2:PHP_EXCEL使用的是一个外部插件,下载网站http://phpexcel.codeplex.com/

下载解压之后打开能看到这样

打开CLASSES文件夹,里面的文件有

把里面的文件拉到 框架里面中, ThinkPHP/Library/Vendor/

3: 因为涉及到调用此类的方法,所以我们要在框架的 公共控制器函数中比如我的这个是所有控制器都继承的这个主方法

我们就打开这个主方法里面

把这段代码方在里面, 方便我们调用

/**

     +----------------------------------------------------------

     * Export Excel | 2013.08.23

     * Author:HongPing <hongping626@qq.com>

     +----------------------------------------------------------

     * @param $expTitle     string File name

     +----------------------------------------------------------

     * @param $expCellName  array  Column name

     +----------------------------------------------------------

     * @param $expTableData array  Table data

     +----------------------------------------------------------

     */

    public function exportExcel($expTitle,$expCellName,$expTableData){

        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称

        $fileName = $_SESSION['loginAccount'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定

        $cellNum = count($expCellName);

        $dataNum = count($expTableData);

        vendor("PHPExcel.PHPExcel");

        $objPHPExcel = new PHPExcel();

        $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');

        $objPHPExcel->getActiveSheet()->mergeCells('A1:'.$cellName[$cellNum-].'');//合并单元格

        $objPHPExcel->setActiveSheetIndex()->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s')); 

        for($i=;$i<$cellNum;$i++){

            $objPHPExcel->setActiveSheetIndex()->setCellValue($cellName[$i].'', $expCellName[$i][]);

        }

          // Miscellaneous glyphs, UTF-8  

        for($i=;$i<$dataNum;$i++){

          for($j=;$j<$cellNum;$j++){

            $objPHPExcel->getActiveSheet()->setCellValue($cellName[$j].($i+), $expTableData[$i][$expCellName[$j][]]);

          }            

        } 

        header('pragma:public');

        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');

        header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 

        $objWriter->save('php://output');

        exit;  

    }

    /**

     +----------------------------------------------------------

     * Import Excel | 2013.08.23

     * Author:HongPing <hongping626@qq.com>

     +----------------------------------------------------------

     * @param  $file   upload file $_FILES

     +----------------------------------------------------------

     * @return array   array("error","message")

     +----------------------------------------------------------    

     */  

    public function importExecl($file){

        if(!file_exists($file)){

            return array("error"=>,'message'=>'file not found!');

        }

        Vendor("PHPExcel.PHPExcel.IOFactory");

        $objReader = PHPExcel_IOFactory::createReader('Excel5');

        try{

            $PHPReader = $objReader->load($file);

        }catch(Exception $e){}

        if(!isset($PHPReader)) return array("error"=>,'message'=>'read error!');

        $allWorksheets = $PHPReader->getAllSheets();

        $i = ;

        foreach($allWorksheets as $objWorksheet){

            $sheetname=$objWorksheet->getTitle();

            $allRow = $objWorksheet->getHighestRow();//how many rows

            $highestColumn = $objWorksheet->getHighestColumn();//how many columns

            $allColumn = PHPExcel_Cell::columnIndexFromString($highestColumn);

            $array[$i]["Title"] = $sheetname;

            $array[$i]["Cols"] = $allColumn;

            $array[$i]["Rows"] = $allRow;

            $arr = array();

            $isMergeCell = array();

            foreach ($objWorksheet->getMergeCells() as $cells) {//merge cells

                foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference) {

                    $isMergeCell[$cellReference] = true;

                }

            }

            for($currentRow =  ;$currentRow<=$allRow;$currentRow++){

                $row = array();

                for($currentColumn=;$currentColumn<$allColumn;$currentColumn++){;               

                    $cell =$objWorksheet->getCellByColumnAndRow($currentColumn, $currentRow);

                    $afCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn+);

                    $bfCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn-);

                    $col = PHPExcel_Cell::stringFromColumnIndex($currentColumn);

                    $address = $col.$currentRow;

                    $value = $objWorksheet->getCell($address)->getValue();

                    if(substr($value,,)=='='){

                        return array("error"=>,'message'=>'can not use the formula!');

                        exit;

                    }

                    if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC){

                        $cellstyleformat=$cell->getParent()->getStyle( $cell->getCoordinate() )->getNumberFormat();

                        $formatcode=$cellstyleformat->getFormatCode();

                        if (preg_match('/^([$[A-Z]*-[0-9A-F]*])*[hmsdy]/i', $formatcode)) {

                            $value=gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));

                        }else{

                            $value=PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);

                        }               

                    }

                    if($isMergeCell[$col.$currentRow]&&$isMergeCell[$afCol.$currentRow]&&!empty($value)){

                        $temp = $value;

                    }elseif($isMergeCell[$col.$currentRow]&&$isMergeCell[$col.($currentRow-)]&&empty($value)){

                        $value=$arr[$currentRow-][$currentColumn];

                    }elseif($isMergeCell[$col.$currentRow]&&$isMergeCell[$bfCol.$currentRow]&&empty($value)){

                        $value=$temp;

                    }

                    $row[$currentColumn] = $value;

                }

                $arr[$currentRow] = $row;

            }

            $array[$i]["Content"] = $arr;

            $i++;

        }

        spl_autoload_register(array('Think','autoload'));//must, resolve ThinkPHP and PHPExcel conflicts

        unset($objWorksheet);

        unset($PHPReader);

        unset($PHPExcel);

        unlink($file);

        return array("error"=>,"data"=>$array);

    } 

二、使用

把代码放进父类控制器

需要注意的地方:路径与加个\才能调用

OK.放进去之后,不是就可以用了,我们还要通过我们的实际路径更改一下.

4:现在我们可以开始来调用了

在我们使用的控制器里面,调用此方法

调用方法:

使用:例子:

看到Array的数据跟这个顺序是正比的,做一个数据导出的操作

效果:

大致就是这样,园丁qing的第一篇货,望多来逛逛。

PHPExcel导出excel文件的更多相关文章

  1. 应用phpexcel导出excel文件后打不开的问题解决方法

    应用phpexcel导出excel文件后打不开,提示“文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配”. 试了以下方法: 1.首先区分文件格式是2003,还是2007. 参 ...

  2. Yii框架中使用PHPExcel导出Excel文件

    最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config\main.php中添加对PHPExcel的引用,我的方式是这样: 1 2 3 4 ...

  3. thinkPHP5.0 使用PHPExcel导出Excel文件

    首先下载PHPExcel类.网上很多,自行下载. 我下载的跟composer下载的不太一样.我下载的是   下载存放目录.jpg 而composer下载的是:   composer下载.jpg 本篇使 ...

  4. 使用phpExcel导出excel文件

    function export($log_list_export) { require "../include/phpexcel/PHPExcel.php"; require &q ...

  5. 使用PHPExcel实现Excel文件的导入和导出(模板导出)

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是:1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度 ...

  6. phpexcel 导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法

    使用过很多次phpexcel了,有时需要保存文件到磁盘,有时需要浏览器弹出下载.保存到磁盘一半不会出现问题,关键是浏览器弹出保存,经常会发生导出的excel文件无法打开,提示文件格式或文件名无效,文件 ...

  7. PHP从数据库导出EXCEL文件

    参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...

  8. PHP导出excel文件

    现在教教你如何导入excel文件: 在我的文件储存里面有一个com文件夹的,将其解压放在ThinkPHP/Library/文件夹里面,然后就是写控制器啦!去调用这个插件: <?php names ...

  9. PHPExcel导出excel表格

    if(!function_exists('exportExcel')){    //导出excel文件    function exportExcel($datas, $save_method='ht ...

随机推荐

  1. Hadoop家族学习路线图--转载

    原文地址:http://blog.fens.me/hadoop-family-roadmap/ Sep 6, 2013 Tags: Hadoophadoop familyroadmap Comment ...

  2. 琐碎-关于hadoop的GenericOptionsParser类

    GenericOptionsParser 命令行解析器 是hadoop框架中解析命令行参数的基本类.它能够辨别一些标准的命令行参数,能够使应用程序轻易地指定namenode,jobtracker,以及 ...

  3. iOS 生成本地验证码

    在应用程序注册.登陆或者有关支付确认的界面,经常会用到验证码,验证码有的是通过手机发送获取的,有的是在本地点击获取的,通过手机发送获取的动态验证码可以使用第三方类库实现,本地点击获取的是在本地自己绘制 ...

  4. php核心知识要点

    Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的.面向对象的.解释型的.健壮的.安全的.性能非常之高的.独立于架构的.可移植的.动态的脚本语 ...

  5. PPI_network&calc_ppi

    # -*- coding: utf-8 -*- # __author__ = 'JieYao' from biocluster.agent import Agent from biocluster.t ...

  6. [改善Java代码]适时选择getDeclaredxxx和getxxx

    Java的Class类提供了很多的getDeclaredxxx方法和getxxx方法,例如getDeclaredmethod和getMethod成对出现,getDeclaredConstructors ...

  7. loadrunner做webservice接口之简单调用

    今天听大神讲了webservice做接口,我按照他大概讲的意思自己模拟实战了下,可能还有很多不对,一般使用webservice做接口,会使用到soapui,但是用了loadrunner以后发现lr很快 ...

  8. BOOTCAMP版本适配机型表

    这些只支持64位的win7 win8 ******************************************** 5.1.5640 MacBook Air(11 英寸,2013 年中)M ...

  9. html5之meta标签viewport应用

    在html5移动页面中,viewport定义必不可少. 首先了解下关于viewport的概念: 先了解移动设备的屏幕尺寸和设备尺寸: iPhone3 设备尺寸 320*480 ; 屏幕尺寸  320* ...

  10. Git CMD - push: Update remote refs along with associated objects

    命令格式 git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pac ...