TP5 PHPEXCEL 导入导出excel的方法

1、先在github里面下载PHPexcel这个类库;

下载地址:https://github.com/PHPOffice/PHPExcel

2、解压之后把它复制到extend里面

3、解压后:Classes文件夹改名为PHPExcel
 

 

namespace app\index\controller;
use think\Loader;
use think\Controller;
use think\Db;

class Index
{
    public function excel()
     {
        //导出
	//##########################################################################
	$list = Db::name("agent")->field("agent_id,agent_name,agent_phone,agent_sn,agent_fuzearea,root_id,agent_member,agent_event,agent_areainfo")->limit(50)->select();
	$file_name = date('Y-m-d_His').'.xls';
        $path = dirname(__FILE__);
        Loader::import('PHPExcel.Classes.PHPExcel');
        Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
      
        $PHPExcel = new \PHPExcel();
        // print_r($PHPExcel);die;
        $PHPSheet = $PHPExcel->getActiveSheet();
        $PHPSheet->setTitle("代理商");
        $PHPSheet->setCellValue("A1","ID");
        $PHPSheet->setCellValue("B1","名字");
        $PHPSheet->setCellValue("C1","电话");
        $PHPSheet->setCellValue("D1","编号");
        $PHPSheet->setCellValue("E1","负责区域");
        $PHPSheet->setCellValue("F1","代理商编号");
        $PHPSheet->setCellValue("G1","管理员id");
        $PHPSheet->setCellValue("H1","联系人");
        $PHPSheet->setCellValue("I1","代理商级别");
        $PHPSheet->setCellValue("J1","代理商所在地址");


        $i = 2;
		foreach($list as $key => $value){
        	$PHPSheet->setCellValue('A'.$i,''.$value['agent_id']);
        	$PHPSheet->setCellValue('B'.$i,''.$value['agent_name']);
        	$PHPSheet->setCellValue('C'.$i,''.$value['agent_phone']);
        	$PHPSheet->setCellValue('D'.$i,''.$value['agent_sn']);
        	$PHPSheet->setCellValue('E'.$i,''.$value['agent_fuzearea']);
        	$PHPSheet->setCellValue('F'.$i,''.$value['agent_sn']);
        	$PHPSheet->setCellValue('G'.$i,''.$value['root_id']);
        	$PHPSheet->setCellValue('H'.$i,''.$value['agent_member']);
        	$PHPSheet->setCellValue('I'.$i,''.$value['agent_event']);
        	$PHPSheet->setCellValue('J'.$i,''.$value['agent_areainfo']);
        	$i++;
    	}
        $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,"Excel2007");
        header('Content-Disposition: attachment;filename='.$file_name);
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        $PHPWriter->save("php://output");
     }

    //导入
    //#################################
    public function insert_excel()
    {
    	Loader::import('PHPExcel.Classes.PHPExcel');
        Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
        Loader::import('PHPExcel.Classes.PHPExcel.Reader.Excel5');
        $PHPExcel = new \PHPExcel();
        //获取表单上传文件
        $file = request()->file('excel');

        // echo function_exists($connect->validate);die;
        $info = $file->validate(['size'=>15678,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel');
        if ($info) {
            $exclePath = $info->getSaveName();
              //获取文件名
            $file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath;
               //上传文件的地址
            $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
            $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');
              //加载文件内容,编码utf-8
            $excel_array=$obj_PHPExcel->getsheet(0)->toArray();
            // print_r($excel_array);die;
               //转换为数组格式
            array_shift($excel_array);
              //删除第一个数组(标题);
            $city = [];
            $error_infos = [];
            $login_info = [];
            $i=0;
            // $j=2;
            foreach($excel_array as $k=>$v) {
				
				$sn = Db::name('agent')->where('agent_sn',$v[0])->find();
                if ($sn) {
                	$j = $k+2;
                	$error_infos[$k] = "第{$j}条代理商编号已存在";
                	$i++;
                	continue;
                }
				$city[$k]['agent_sn'] 		= $v[0];
                $city[$k]['agent_name'] 	= $v[1];
                $city[$k]['agent_phone'] 	= $v[2];
                $city[$k]['agent_fuzearea'] = $v[3];                
                $city[$k]['root_id'] 		= $v[4];
                $city[$k]['agent_member'] 	= $v[5];
                $city[$k]['agent_event'] 	= $v[6];
                $city[$k]['agent_areainfo'] = $v[7];
                               
                $i++;
            }
            // print_r($city);die;
            $success = Db::name('agent')->insertAll($city);		
            $error=$i-$success;  
            $error_infos['msg'] = "总{$i}条,成功{$success}条,失败{$error}条。";

            if ($i > 0 && $success > 0) {
            	return $this->ok(205,"xc",$error_infos);
            }else{
            	return $this->no(300,'导入失败');
            }
             //批量插入数据
        } else {
            echo $file->getError();
        }
    }
}

 

 

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
使用Laravel框架实现PHPExcel导入导出功能非常简单。首先,我们需要安装PHPExcel库。可以通过Composer来安装,只需在终端中运行以下命令: ``` composer require phpoffice/phpexcel ``` 安装完成之后,在Laravel的控制器中,我们可以使用PHPExcel的相关类来实现导入导出功能。 要导出Excel文件,我们可以先创建一个PHPExcel对象,并设置一些基本的属性,例如文件名、作者等。然后,我们可以创建一个工作表,并设置一些表头信息。接下来,我们可以遍历需要导出的数据,将数据逐行写入工作表中。最后,我们可以使用PHPExcelWriter将工作表保存为Excel文件。下面是一个示例代码: ```php use PHPExcel; use PHPExcel_IOFactory; class ExportController extends Controller { public function exportData() { $objPHPExcel = new PHPExcel(); // 设置文件属性 $objPHPExcel->getProperties() ->setCreator("Your Name") ->setLastModifiedBy("Your Name") ->setTitle("Export Data") ->setSubject("Export Data") ->setDescription("Export Data"); $objPHPExcel->setActiveSheetIndex(0); $sheet = $objPHPExcel->getActiveSheet(); // 设置表头信息 $sheet->setCellValue('A1', 'Column 1') ->setCellValue('B1', 'Column 2') ->setCellValue('C1', 'Column 3'); // 导出数据 $data = [ ['Data 1', 'Data 2', 'Data 3'], ['Data 4', 'Data 5', 'Data 6'], ]; foreach ($data as $key => $value) { $row = $key + 2; $sheet->setCellValue('A' . $row, $value[0]) ->setCellValue('B' . $row, $value[1]) ->setCellValue('C' . $row, $value[2]); } // 导出Excel $objPHPExcel->getActiveSheet()->setTitle('Sheet 1'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('export.xlsx'); } } ``` 要导入Excel文件,我们可以先创建一个PHPExcel对象,并使用`load`方法加载Excel文件。然后,我们可以通过`getActiveSheet`方法获取工作表,并使用`getCell`方法获取单元格的值。接下来,我们可以遍历工作表的行和列,将数据存储到数组中。最后,我们可以对获取到的数据进行相关的处理。下面是一个示例代码: ```php use PHPExcel; use PHPExcel_IOFactory; class ImportController extends Controller { public function importData() { $objPHPExcel = PHPExcel_IOFactory::load('import.xlsx'); $sheet = $objPHPExcel->getActiveSheet(); $data = []; foreach ($sheet->getRowIterator() as $row) { $rowData = []; foreach ($row->getCellIterator() as $cell) { $rowData[] = $cell->getValue(); } $data[] = $rowData; } // 对导入的数据进行处理 // ... return $data; } } ``` 通过以上的代码,我们就可以轻松地在Laravel框架中实现PHPExcel导入导出功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值