今天园子刚开,先来个货顶下,后续园丁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. mysql修改表结构

    表 linksus_gov_running_trans 和 linksus_gov_running 的 is_mulsplit_id 字段需要改成 bigint(20)原:`is_mulsplit_i ...

  2. Innode引擎监控的开启的方法

    查看当前InnoDB引擎信息 mysql> show innodb status\G 开启InnoDB监控,有四种: 1. innodb_monitor mysql> create tab ...

  3. do {...} while (0) in macros

    If you are a C programmer, you must be familiar with macros. They are powerful and can help you ease ...

  4. shell判断一个变量是否为空

    判断一个变量是否为空 . 1. 变量通过" "引号引起来 如下所示:,可以得到结果为 IS NULL. #!/bin/sh para1= if [ ! -n "$para ...

  5. xcode笔记

    1.Alt键的使用   2.设置捕捉所有意外断点:停在代码出错处     2015年07月27日09:52:12 3.搜索 command + F:在当前的文件中搜索 command + Shift ...

  6. html 动态添加TABLE的行。

    <script type="text/javascript"> var pos =4;//默认位置为4,根据自己需要,也可以通过鼠标事件获取当前行数. function ...

  7. python(6)- json和pickle模块

    这是用于序列化的两个模块: json: 用于字符串和python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 Json模块提供了四个功能:dumps ...

  8. xml版本学生管理系统

    一: 需求描述 学生成绩管理系统,使用xml存储学生信息,可以对学生信息进行增.删.删除操作. 主要目的:练习操作xml元素的增删改查 二:代码结构 1:xml存储数据如下 exam.xml < ...

  9. poj 3159 差分约束

    思路:班长的糖果要比snoopy的多.并且要用手写堆栈,且堆栈的大小要开到20000000. #include<iostream> #include<cstdio> #incl ...

  10. 转 oracle 11g 导出空表

    1.Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出. 2.设置deferred_segment_creation 参数为FALSE后,无论是 ...