thinkphp5整合excel导入导出

浏览:9226 发布日期:2018/07/01 分类:功能实现 关键字: phpexcel
thinkphp5整合excel导入导出
<?php
namespace app\index\controller;
use think\Controller;
use PHPExcel_IOFactory;
use PHPExcel;
use think\Db;

class Index extends Controller
{    
    public function index(){
        return view();
    }
       public function out(){
           $path = dirname(__FILE__);
           vendor("PHPExcel.PHPExcel");
        vendor("PHPExcel.PHPExcel.Writer.Excel5");
        vendor("PHPExcel.PHPExcel.Writer.Excel2007");
        vendor("PHPExcel.PHPExcel.IOFactory");
        $objPHPExcel = new \PHPExcel();
        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
        $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
        $sql = db('info')->select();

        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'ID编号')
            ->setCellValue('B1', '用户名')
            ->setCellValue('C1', '性别')
            ->setCellValue('D1', '地址');
        /*--------------开始从数据库提取信息插入Excel表中------------------*/
        //$i=2;  //定义一个i变量,目的是在循环输出数据是控制行数
        $count = count($sql);  //计算有多少条数据
        //echo $count;
        //die;
        for ($i = 2; $i <= $count+1; $i++) {
            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $sql[$i-2]['id']);
            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $sql[$i-2]['name']);
            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sql[$i-2]['gender']);
            $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $sql[$i-2]['address']);
        }
        /*--------------下面是设置其他信息------------------*/

        $objPHPExcel->getActiveSheet()->setTitle('信息');      //设置sheet的名称
        $objPHPExcel->setActiveSheetIndex(0);                   //设置sheet的起始位置
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');   //通过PHPExcel_IOFactory的写函数将上面数据写出来
        $PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007");
        header('Content-Disposition: attachment;filename="用户信息.xlsx"');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件
       }
       public function in(){
           vendor("PHPExcel.PHPExcel"); //方法一
        $objPHPExcel = new \PHPExcel();
        //获取表单上传文件
        $file = request()->file('excel');
        $info = $file->validate(['size'=>156780,'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('Excel5');
            //加载文件内容,编码utf-8
            $obj_PHPExcel = $objReader->load($file_name, $encode = 'utf-8'); 

            echo "<pre>";
            $excel_array = $obj_PHPExcel->getsheet(0)->toArray();   //转换为数组格式
            array_shift($excel_array);  //删除第一个数组(标题);
            $data = [];
            foreach ($excel_array as $k => $v) {
                $data[$k]['name'] = $v['0'];
                $data[$k]['gender'] = $v['1'];
                $data[$k]['address'] = $v['2'];
            }
            //批量插入数据
               $success = Db::name('info')->insertAll($data); 
               echo '数据添加成功';
        }else{
            // 上传失败获取错误信息
            echo $file->getError();
        }
       }
}
https://pan.baidu.com/s/1qXK6riGt0Q12U3fgXPbmLA[/url]
评论( 相关
后面还有条评论,点击查看>>