PHP 将数据追加到Excel表格内并保存,可下载,也可以不下载

全屏阅读
  • 基本信息

追加方法:

    /**
     * [readExcel 往Excel表插入数据]
     * @param  [array] $data      [数据]
     * @param  [string] $filePath [文件路径]
     * @param  [array] $column    [表格列]
     * @return [type]             [description]
     */
    public function readExcel($data=array(),$filePath,$column){
 
        //获取后缀名
        $extension = strtolower( pathinfo($filePath, PATHINFO_EXTENSION) );
        //判断
        if ($extension =='xlsx') {
            $objReader = PHPExcel_IOFactory::createReader('Excel2007');//use excel2007 for 2007 format
        } else if ($extension =='xls') {
            //$objReader = new PHPExcel_Reader_Excel5();//use excel2007 for 2007 format
            $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
        } else if ($extension=='csv') {
            //还没有测试过
            $objReader = new PHPExcel_Reader_CSV();
            //默认输入字符集
            $objReader->setInputEncoding('GBK');
            //默认的分隔符
            $objReader->setDelimiter(',');
        }
        //加载新文件
        $objPHPExcel = $objReader->load($filePath);
        $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow();
        $highestColumn = $sheet->getHighestColumn();
        //从第几行追加
        $h = 2;
        //循环数据
        for($j = 0; $j <= count($data); $j++){
            //循环数据内有多少个
            for ($i=0; $i < count($data[$j]); $i++) { 
                //按照表格第几列追加内容
                $objPHPExcel->getActiveSheet()->setCellValue("$column[$i]"."$h",$data[$j][$i]); //填充文字
            }
            //表格行+1
            $h++;
 
        }
 
        $obj_writer = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007'); //生成文件
        $obj_writer->save($filePath); //保存文件
        //返回文件路径
        return $filePath;
 
    }

使用方法:

    /**
     * [packExcels 追加数据到Excel表格]
     * @param  array  $data     [数据]
     * @param  string $fileName [名称]
     * @return [type]           [description]
     */
    public function packExcels($data=array(),$fileName='report'){
 
        //引入PHPExcel累
        require_once ROOT_PATH.'plugins/PHPExcel/Classes/PHPExcel.php';
        require_once ROOT_PATH.'plugins/PHPExcel/Classes/PHPExcel/IOFactory.php';
        require_once ROOT_PATH.'plugins/PHPExcel/Classes/PHPExcel/Reader/Excel5.php';
 
        //定义一个文件模板
        $path = ROOT_PATH . 'public/user.xlsx';
        //存储文件新地址
        $fileWjj = ROOT_PATH . 'public/user_excel/'.date('Ymd').'/';
        //文件名称拼接后缀
        $fileName = $fileName.'.xlsx';
        //判断文件夹是否存在,没有则创建
        if(!is_dir($fileWjj)){
            //去除左右的斜杆 / ,再分割出数组
            $arr = explode('/',trim($fileWjj,"/"));
            //定义空变量
            $a = '';
            //循环数组
            foreach ($arr as $k => $v) {
                //拼接路径
                $a .= $v.'/';
                //判断如果当前的路径不存在,则创建
                if(!is_dir($a)){
                    @mkdir($a);
                }
            }
        }
        //拼接路径
        $file = $fileWjj.$fileName;
        //将文件模板复制到新地址
        copy($path,$file);
        //标题
        //$title = array('编号','姓名','性别','年龄');
        //数据
        //$data = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24));
        //表格列
        $column = array('A','B','C');
 
        return $this->readExcel($data,$file,$column);
 
    }

下载方法:

    /**
     * [exportexcel 下载Excel]
     * @param  array  $data     [description]
     * @param  array  $title    [description]
     * @param  string $filename [description]
     * @return [type]           [description]
     */
    public function exportexcel($data=array(),$title=array(),$filename="report.xlsx"){
 
        header("Content-type:application/octet-stream");
        header("Accept-Ranges:bytes");
        header("Content-type:application/vnd.ms-excel");
        header("Content-Disposition:attachment;filename=".$filename);
        header("Pragma:no-cache");
        header("Expires:0");
 
        if(!empty($title)){
 
            foreach ($title as $k => $v) {
                $title[$k] = iconv("UTF-8","GB2312",$v);
            }
 
            $title = implode("\t",$title);
            echo "$title\n";
 
        }
 
        if(!empty($data)){
 
            foreach ($data as $key => $val) {
                
                foreach ($val as $ck => $cv) {
                    $data[$key][$ck] = iconv("UTF-8","GB2312",$cv);
                }
 
                $data[$key] = implode("\t",$data[$key]);
 
            }
            echo implode("\n",$data);
 
        }
 
    }

注意:

1、引入的PHPExcel文件路径必须改成你自己的,否则报错;

2、注意文件后缀名,xls / xlsx  这两个是有区别的,上面使用的是xlsx,如果使用xls的需要改正;

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!