php中excel的导出导入

1,,导出

<?php 
namespace Admin\Controller;
use Think\Controller; 
/**
*
* 导出Excel文件数据到MySQL数据库
*/
class DaochuController extends CommonController {


    public function export(){
        //引入PHPExcel类
        import('Org.Util.PHPExcel');
        $objPHPExcel = new \PHPExcel();
        $activeSheet = $objPHPExcel->getActiveSheet();
        $objPHPExcel->getProperties()
                ->setCreator($creator)->setLastModifiedBy($modifier)
                ->setTitle($title)->setSubject($subject)
                ->setDescription($description)
                ->setKeywords($keywords)
                ->setCategory($category);
        $data= M('Stock')->where(array('shop'=>$_SESSION['user']['nid']))->select();  
        $shop = M('shop')->where(array('id'=>$_SESSION['user']['nid']))->find();
        $name= $shop['name']; 
        $yanse = $daxiao = array();
        $color = M('yanse')->where(array('shop'=>$_SESSION['user']['nid']))->select();
        $colors = array_coltokey($color,'id');
        $size = M('daxiao')->where(array('shop'=>$_SESSION['user']['nid']))->select();
        $sizes = array_coltokey($size,'id');
        $cursheet = $objPHPExcel->setActiveSheetIndex(0);
        $cursheet->setCellValue('A1', '序号')
                    ->setCellValue('B1', '条码')
                    ->setCellValue('C1', '款号')
                    ->setCellValue('D1', '颜色')
                    ->setCellValue('E1', '大小')
                    ->setCellValue('F1', '销售单价')
                    ->setCellValue('G1', '库存数量');
        $num = 2;
        foreach($data as $k => $v){
            $cursheet->setCellValue('A'.$num, $num-1)
                    ->setCellValue('B'.$num, ' '.$v['cno'])
                    ->setCellValue('C'.$num, ' '.$v['kno'])
                    ->setCellValue('D'.$num, ' '.$colors[$v['color']]['color'])
                    ->setCellValue('E'.$num, ' '.$sizes[$v['size']]['size'])
                    ->setCellValue('F'.$num, $v['price']*1)
                    ->setCellValue('G'.$num, $v['num']);
            $num++;
        }
        $objPHPExcel->setActiveSheetIndex(0);
        $filename = iconv('utf-8','gbk',$name . '导出.xls');
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'.$filename.'"');
        header('Cache-Control: max-age=0');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit();
    }
 
}


2导入

<?php 
namespace Admin\Controller;
use Think\Controller; 
/**
*
* 导入Excel文件数据到MySQL数据库
*/
class DaoruController extends CommonController {
 
    /**
     * 显示上传表单html页面
     */
    public function daoru() { 
        if($_GET['do']=='download'){
            $filepath = './Public/daoru/'.$_SESSION['user']['nid'].'.xls';
            if(file_exists($filepath)){
                $shop = M('shop')->where(array('id'=>$_SESSION['user']['nid']))->find();
                $filename = iconv('utf-8','gbk',$shop['name'].'导入格式.xls');
                header("Content-Type: application/vnd.ms-excel; charset=utf8"); 
                header("Content-Disposition: attachment; filename=".$filename);    
                readfile($filepath); 
                exit();
            }else{
                $this->error('下载文件不存在!');
            }
        }
        $shop = M('shop')->where(array('id'=>$_SESSION['user']['nid']))->find();
        // __ROOT__是根目录,必须指定根目录,才可以下载
        $this->display();
    }
 
    /**
     * 上传Excel文件
     */
    public function upload() {
        //实例化上传类
        $upload = new \Think\Upload();
        //设置附件上传文件大小200Kib
        $upload->maxSize = 2000000;
        //设置附件上传类型
        $upload->allowExts = array('xls', 'xlsx', 'csv');
        //设置附件上传目录
        $upload->rootPath  = './Uploads/';
        //设置附件上传子目录
        $upload->savePath = '';
        $upload->subName  =  array('date','Ym');
        $data=array(
            'upload_time' => time(),
            'upload_user' => $_SESSION['user']['username'],
            'upload_ip' => getIp(),
            'shop'=>$_SESSION['user']['nid']
            );


        
        // 上传文件 
        $info = $upload->upload();
        if (!$info) {   //如果上传失败,提示错误信息
            $this->error($upload->getError());
        } else {    //上传成功
            //获取上传保存文件名
            $fileName = $info['file']['savename'];
            $data['filename'] = $fileName;
            $data['filepath'] = './Uploads/'.$info['file']['savepath'].$fileName;
            $result = M('daorulist')->add($data);
            $this->importExcel('./Uploads/'.$info['file']['savepath'].$fileName);
            


        }
    }
    
 
    /**
     *
     * 导入Excel文件
     */
    public function importExcel($fileName) {
        header("content-type:text/html;charset=utf-8");
        //引入PHPExcel类
        import('Org.Util.PHPExcel');
        import('Org.Util.PHPExcel.Reader.Excel5','','.php');
        //vendor('PHPExcel');
        //vendor('PHPExcel.IOFactory');
        //vendor('PHPExcel.Reader.Excel5');
 
 
        //文件路径
        $filePath = $fileName;
        //实例化PHPExcel类
        $PHPExcel = new \PHPExcel();
        //默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
        import("Org.Util.PHPExcel.Reader.Excel2007",'','.php');
        $PHPReader = new \PHPExcel_Reader_Excel2007();
        if (!$PHPReader->canRead($filePath)) {
            $PHPReader = new \PHPExcel_Reader_Excel5();
            if (!$PHPReader->canRead($filePath)) {
                echo 'no Excel';
                return;
            }
        }
 
        //读取Excel文件
        $PHPExcel = $PHPReader->load($filePath);
        //读取excel文件中的第一个工作表
        $rows = $PHPExcel->getSheet(0)->toArray();//toArray函数把获取的excel数据转换成数组
        unset($rows[0]);
        foreach($rows as $v) {
            $cno = $v[0];
            $kno = $v[1];
            $color = $v[2];
            $size = $v[3];
            $price = $v[4];
            $num = $v[5];
            if(empty($cno) || empty($kno) || empty($color) || empty($size) || empty($price) || empty($num)){
                    continue;
            }
            $m = M('stock');
            $yanse = $daxiao = array();
            $yanse = M('yanse')->where(array('color'=>$color,'shop'=>$_SESSION['user']['nid']))->find();
            $daxiao = M('daxiao')->where(array('size'=>$size,'shop'=>$_SESSION['user']['nid']))->find();
            $data = array();
            $data = array(
                'cno'=>$cno,
                'kno'=>$kno,
                'color'=>$yanse['id'],
                'size'=>$daxiao['id'],
                'price'=>$price,
                'shop'=>$_SESSION['user']['nid'],
                'num'=>$num,
                'ctime'=>time(),
                'add_time'=>time(),
                'ip'=>getIp(),
                'name'=>$_SESSION['user']['username']
                );
            $dat = array();
            $dat = $m->where(array('cno'=>$data['cno'],'color'=>$data['color'],'size'=>$data['size'],'kno'=>$data['kno']))->find();
            if($dat){
                $data['num'] = $dat['num']+ $num;
                $m->where(array('id'=>$dat['id']))->save($data);
                $number = $dat['id'];
            } else {
                $number = $m->add($data);
            }
            
            M('srecord')->add($data);
        }


        if ($number > 0) {
            $this->success( "导入成功!",U('Daoru/upload_list'));
        } else {
            $this->error("导入失败!!");
        }
    }


    public function upload_list(){
        $count=M('daorulist')->where(array('shop'=>$_SESSION['user']['nid']))->count();
        $Page = $this->page($count);
        $show = $Page->show();
        $this->list=M('daorulist')->where(array('shop'=>$_SESSION['user']['nid']))->limit($Page->firstRow.','.$Page->listRows)->order ('id asc') ->select();
        $this->assign('page',$show);
        $this->display();


    }
 
}


?>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值