Tp5.1使用phpexcel导入导出

该博客介绍了如何在TP5.1框架中使用PHPExcel库进行数据导入导出,并在导入后删除上传文件及导出后删除数据库数据。详细步骤包括下载资源、文件上传、读取Excel内容、保存到数据库、设置导出内容、删除数据等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

TP5.1使用phpexcel第三方包进行数据导入导出操作,并实现导入后上传文件删除及导出后数据库数据删除操作。


解决方案:

资源包下载:https://github.com/PHPOffice/PHPExcel
操作方法:下载后放入vendor文件夹下

操作案例(实现导入后上传文件删除及导出后数据库数据删除操作):

/**
 * [listExportDo 导入]
 * @return [type] [description]
 */
public function listExportDo()
    {
        $return_data['status'] = 0;
        $return_data['msg'] = "导入失败!";

        $postParam = input('post.');

        if(!$postParam['list_fuser']){
            return $return_data;die;
        }

        vendor("PHPExcel.PHPExcel");
        $objPHPExcel = new \PHPExcel;

        $file = request()->file('upload_file');
        // dump($file);die;

        $info = $file->validate(['ext' => 'xls'])->move(ROOT_PATH . 'public' . DS . 'uploads');  
        try {
            if($info)
            {
               $exclePath = $info->getSaveName();  //获取文件名
               $file_name = ROOT_PATH . 'public' . DS . 'uploads\\' . $exclePath;//上传文件的地址
               // 文件格式为xls 时,使用createReader("Exce15")
               // 文件格式为xlsx时,使用createReader("Exce2007")
               // $objReader =\PHPExcel_IOFactory::createReader("Exce2007");
               $objReader =\PHPExcel_IOFactory::createReader("Excel5");
               $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
               $excel_array=$obj_PHPExcel->getSheet(0)->toArray();   //转换为数组格式
               array_shift($excel_array);  //删除第一个数组(标题);
               $city = [];
               $i=0;
               $time = time();
               foreach($excel_array as $k=>$v) {
                   $city[$k]['list_name'] = $v[0];
                   $city[$k]['list_phone'] = $v[1];
                   $city[$k]['list_addtime'] =$time;
                   $city[$k]['list_fuserid'] =$postParam['list_fuser'];
                   $i++;
               }
               $insertRes = db("lists")->insertAll($city);
               if($insertRes){
                    $return_data['status'] = 1;
                    $return_data['msg'] = "导入成功!";

                    // 删除文件
                    unset($info);
                    unlink($file_name);

               }
            }else
            {
               // echo $file->getError();
                $return_data['errormsg'] = $file->getError(); 
            }
        } catch (Exception $e) {
            $return_data['errormsg2'] = $e->getError();
        }

        return $return_data;
    }
    
    public function listImportDo(){
        // 身份验证
        $currentUser = db("backlogin")->where('id','=',session("loginback_id"))->field('login_type')->find();

        if($currentUser['login_type']==1){
            $list = db('lists')->select();
        }else{
            $list = db('lists')->where('list_fuserid','=',session("loginback_id"))->select();
        }
        vendor("PHPExcel.PHPExcel");
        $objPHPExcel = new \PHPExcel();

        $objPHPExcel->getProperties()->setCreator("ctos")
            ->setLastModifiedBy("ctos")
            ->setTitle("Office 2007 XLSX Test Document")
            ->setSubject("Office 2007 XLSX Test Document")
            ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
            ->setKeywords("office 2007 openxml php")
            ->setCategory("Test result file");

        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);


        //合并cell
        $objPHPExcel->getActiveSheet()->mergeCells('A1:D1');

        // set table header content
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '数据中心导出  时间:'.date('Y-m-d H:i:s'))
            ->setCellValue('A2', '编号')
            ->setCellValue('B2', '用户名')
            ->setCellValue('C2', '手机号')
            ->setCellValue('D2', '时间');


        // Miscellaneous glyphs, UTF-8
        for($i=0;$i<count($list);$i++){
            $autoId = $i+1;
            $objPHPExcel->getActiveSheet(0)->setCellValue('A'.($i+3), $autoId);
            $objPHPExcel->getActiveSheet(0)->setCellValue('B'.($i+3), $list[$i]['list_name']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('C'.($i+3), $list[$i]['list_phone']);
            $objPHPExcel->getActiveSheet(0)->setCellValue('D'.($i+3), date("Y-m-d H:i:s",$list[$i]['list_addtime']));
            $objPHPExcel->getActiveSheet()->getRowDimension($i+3)->setRowHeight(16);
        }


        //  sheet命名
        $objPHPExcel->getActiveSheet()->setTitle('数据中心');


        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);

        // excel头参数
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="数据中心('.date('Ymd-His').').xls"');  //日期为文件名后缀
        header('Cache-Control: max-age=0');

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  //excel5为xls格式,excel2007为xlsx格式

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

        // 删除
        if($currentUser['login_type']==1){
            $list = db('lists')->where('1=1')->delete();
        }else{
            $list = db('lists')->where('list_fuserid','=',session("loginback_id"))->delete();
        }

    }

问题总结:

"continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"

 ZipArchive::locateName(): Invalid or uninitialized Zip object

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红尘炼炼心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值