今天园子刚开,先来个货顶下,后续园丁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. 如何删除google流氓扩展(强制安装,并且无权限删除)

    chrome现在也是流氓遍地跑, 没比IE安全到哪里. TubeAdblocKer 这个流氓扩展,强制安装,无法删除.google了一大堆方法,全部无效.祭出了filelocator这个神器之后,终于 ...

  2. Destroying the bus stations

    Destroying the bus stations Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1832   Acce ...

  3. 用DAEMON TOOLS打开rational ross 的bin文件并安装过程梳理

    最近要开始准备毕业设计了,学习熟悉了一些UML用例图.类图之类的,开始准备用自家PC电脑画图的时候发现Rational Ross没安装. 本以为简单,却碰上bin文件.琢磨好久,终于把Ross安上了. ...

  4. JPA注释,内嵌数据对象

    @Data @Embeddable @NoArgsConstructor @AllArgsConstructor @JsonNaming(value = LowerCaseWithUnderscore ...

  5. 关于JDK中的集合总结(三)

    泛型: jdk1.5出现的安全机制. 好处: 1,将运行时期的问题ClassCastException转到了编译时期. 2,避免了强制转换的麻烦. <>:什么时候用?当操作的引用数据类型不 ...

  6. 转:java 类名 this 的使用

    转自: http://www.cnblogs.com/PengLee/p/3993033.html 类名.class与类名.this详解   类名.class      我们知道在java中,一个类在 ...

  7. BOOTCAMP版本适配机型表

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

  8. bootstrap的滚动监听

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  9. ComboBoxEdit数据绑定

    ComboBoxEdit也是DevExpress winform控件中经常使用的一个,我们在使用的过程中可能有时需要对ComboBoxEdit控件进行数据绑定,而ComboBoxEdit控件不像 Lo ...

  10. Java之日期和时间的计算

    学习是一个循序渐进的过程,不知道你们有没有这样的感受:有很多学习过的知识在很久没有温习之后就不知不觉地还给老师了.所以最近总结,把那些还给老师的再找回来. 运行图: 时间戳: 运行效果图: 时间日期的 ...