PHPExcel 上传下载的示例代码

本文介绍如何使用PHPExcel库在PHP中导出数据到Excel文件,并从Excel文件中导入数据到数据库。首先通过Composer安装PHPExcel,然后利用其类创建Excel对象,设置单元格值,最后保存为.xls文件。导入时,读取Excel文件,转换为数组,再批量插入数据库。

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

1:首先用composer require phpoffice/phpexcel

2: 引入相关的类:

use PHPExcel;
use PHPExcel_Cell;
use PHPExcel_Writer_Excel5;

3:下载具体代码


    public function exportExcel()
    {
        $dataArr = Admin::all();
        //创建PHPExcel对象
        $obj = new PHPExcel();
        //创建excel写入对象
        $writer = new PHPExcel_Writer_Excel5($obj);
        //得到当前工作表对象
        $curSheet = $obj->getActiveSheet(0);
        foreach ($dataArr as $row => $admObj) { //row 是行,注意从0开始,外循环是行,
            $col = 0;
            foreach ($admObj->getData() as $field => $value) {
              //  echo $row ."<=>".$col."  , ".$field."=>".$value.'<br>';
//                die();
                if ($row == 0) {
                   // $num 控制的是行,$col控制的是列
                    //第一行
                    $cellName = PHPExcel_Cell::stringFromColumnIndex($col) . ($row + 1);//取单元格
                    $curSheet->setCellValue($cellName, $field);//给单元格赋值
                    //第二行
                    $cellName = PHPExcel_Cell::stringFromColumnIndex($col) . ($row + 2);
                    $curSheet->setCellValue($cellName, $value);
                } else {
                    $cellName = PHPExcel_Cell::stringFromColumnIndex($col) . ($row + 2);
                    $curSheet->setCellValue($cellName, $value);
                }
                $col++;
            }
        }
        $fileName = date('YmdHis', time());
        header('Content-Type: application/vnd.ms-execl');
        header('Content-Disposition: attachment;filename="' . $fileName . '.xls"');
        header('Cache-Control: max-age=0');
        $writer->save('php://output');
    }

4:上传具体代码:

    /**
     * EXCEL 文件上传并导入数据库
     * @throws \PHPExcel_Exception
     */
    public function doUpload()
    {
        $file = request()->file('excel');//接收上传的文件
        // 定义文件上传的目录(文件夹)
        $uploadDir = '/home/project/kona/think51/public/upload/excel/';
        //将文件上传到目标文件夹
       $info = $file->move($uploadDir);
        if ($info) {//文件上传成功
            // 获取上传文件的路径(包括文件夹和文件名)
           $fileName = $uploadDir.$info->getSaveName();
            //将文件放入PHPEXcel的读取器中
            $phpExcelObj = \PHPExcel_IOFactory::load($fileName);
            //读取PHPEXcel的sheet[0]的数据,并转换为数组
            $sheet = $phpExcelObj->getSheet(0)->toArray();
            //移出数组的第一个元素(在此处数组),并赋值给fields,sheet中不在包含表头行了
            $fields = array_shift($sheet);
            foreach ($sheet as $row => $ary) {//遍历
                    //将表头和内容合并成一个数组
                    $newarr = array_combine($fields, $ary);
                    unset($newarr['id']);//ID不能插入,删除key为ID的元素
                    //$newarr['pwd'] = md5($newarr['pwd']);
                    $admin = new Admin();
                    $res=$admin->save($newarr);
                    if(empty($res)) {
                        $this->success("数据上传失败", "index");
                    }
            }
            $this->success("上传成功并插入数据库", "index");
        } else {
            $this->error($file->getError(), "index");
       }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fish_study_csdn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值