将心比心,方得人心~

thinkphp5中使用PHPExcel

周洲 2018-04-24 09:54:14

1.使用composer下载PHPExcel,首先安装过composer之后,用dos命令行,引入到项目所在目录下,然后输入composer require phpexcel/phpexcel ,然后点回车键

你会发现项目的目录中在vendor的目录下多了一个文件夹(phpexcel),这个文件夹中的东西就是要使用的php中的Excel表格操作

2.上传表单:

先看看表单

php代码:


public function upload() {
        //获取表单上传文件
        $file = request()->file('file');

        if (empty($file)) {
            return '请上传文件';
        }

        $info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public/uploads');//上传验证后缀名,以及上传之后移动的地址
        // $info = $file->validate(['size'=>1567888,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public/uploads');

        if ($info) {
            $exclePath = $info->getSaveName();  //获取文件名
            $file_name = ROOT_PATH . 'public' . DS . 'uploads' . DS . $exclePath;   //上传文件的地址

            $objReader = \PHPExcel_IOFactory::createReader('excel2007'); //建立reader对象
            $objPHPExcel = $objReader->load($file_name);
            $sheet = $objPHPExcel->getSheet();
            $highestRow = $sheet->getHighestDataRow(); // 取得总行数

            $highestColumn_num = \PHPExcel_Cell::columnIndexFromString($sheet->getHighestDataColumn());    //列数


            //$columns = PHPExcel_Cell::getColumn($highestColumn_num);
            $columns = array('A', 'B', 'C');

            $arr_result = array();
            $dealer_element = array();

            for ($j = 1; $j <= $highestRow; $j++) {
                for ($k = 0; $k < count($columns); $k++) {
                    //读取单元格
                    $value = $objPHPExcel->getActiveSheet()->getCell($columns[$k] . $j)->getValue();//这个就是获取每个单元格的值

                    $value = trim($value);
                    if (empty($value)) {
                        $value = NULL;
                    }
                    $dealer_element[$k] = $value;
                    //这里可以根据要求,做一些数据的验证
                }

                $arr_result[$j] = $dealer_element;
            }

            return $arr_result;

        }
    }
返回数据:



{
  "1": [
    "name",
    "class",
    "age"
  ],
  "2": [
    "张三",
    "1",
    "5"
  ],
  "3": [
    "李四",
    "1",
    "5"
  ]
}


打赏

『微信打赏』

Tag标签thinkphp5 

我是有底线的