phpexcel导入数据库 基于thinkphp3.2

转载自:PHPexcel

 public function studentImportExcel(){   

        if (!empty ( $_FILES)){

            $upload = new \Think\Upload();                      // 实例化上传类

            $upload->maxSize   =     10485760 ;                 // 设置附件上传大小

            $upload->exts      =     array('xls','xlsx');       // 设置附件上传类型

            $upload->rootPath  = './Public/Excel/';             // 设置附件上传根目录

            $upload->autoSub   = false;                         // 将自动生成以photo后面加时间的形式文件夹,关闭

            

            // 上传文件

            $info   =   $upload->upload();                                   // 上传文件

            $exts   = $info['excel']['ext'];                                 // 获取文件后缀

            $filename = $upload->rootPath.$info['excel']['savename'];        // 生成文件路径名

            if(!$info) {                                                     // 上传错误提示错误信息

                $this->error($upload->getError()); 

            }else{                                                           // 上传成功

                import("Org.Util.PHPExcel");                                 // 导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入

                $PHPExcel = new \PHPExcel();                                 // 创建PHPExcel对象,注意,不能少了\

                if ($exts == 'xls') {                                        // 如果excel文件后缀名为.xls,导入这个类

                    import("Org.Util.PHPExcel.Reader.Excel5");

                    $PHPReader = new \PHPExcel_Reader_Excel5();

                } else 

                    if ($exts == 'xlsx') {

                        import("Org.Util.PHPExcel.Reader.Excel2007");

                        $PHPReader = new \PHPExcel_Reader_Excel2007();

                    }

 

                $PHPExcel = $PHPReader->load($filename);                     // 载入文件

                $currentSheet = $PHPExcel->getSheet(0);                      // 获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推

                $allColumn = $currentSheet->getHighestColumn();              // 获取总列数

                $allRow = $currentSheet->getHighestRow();                    // 获取总行数

                for ($currentRow = 0; $currentRow <= $allRow; $currentRow ++) {// 循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始

                    for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn ++) {// 从哪列开始,A表示第一列

                        $address = $currentColumn . $currentRow;             // 数据坐标

                        $ExlData[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue();// 读取到的数据,保存到数组$arr中

                    }

                }

                $Hint = new \Operation\Controller\HintController();          // 生成操作类对象

                $data = studentImportExcel_RAW($ExlData);                    // 调用公用方法的读数组并写入数据库操作

                $users = M('users');                                         // 生成数据库对象

                $result = $users->addAll($data);                             // 批量写入数据库  

                if ($result) {                                               // 验证

                    $Hint->mysuccee("导入成功", "2", "Admin/Users/studentManage");// 跳转学生管理页面

                } else {

                    $Hint->myerror("导入失败,原因可能是excel表中有些用户已被注册。或表格格式错误","5");// 提示错误

                }

            }

        }else {

          $this->display(); 

        }    

                

}

 

function  studentImportExcel_RAW($ExlData){   // 将导入表中的数据添加到  数据库数组中去

    $Hint = new \Operation\Controller\HintController();     // 生成操作类对象

    for($i = 2,$j=0;$i<sizeof($ExlData);$i++,$j++){

        $dataList[] = array(

            'username'=>$ExlData[$i]['A'],

            'pwd'     =>MD5(11),

            'realname'=>$ExlData[$i]['B'],

            'stunum'  =>$ExlData[$i]['C'],

            'email'   =>$ExlData[$i]['D'],

            'phone'   =>$ExlData[$i]['E'],

            'photo'   =>$Hint->randPhoto(),

            'role'    =>'1',

            'intro'   =>'这家伙很懒什么都没留下',

            'regdate' =>date('Y-m-d H:i:s', time())         // 写入注册时间

        );

    }

    return $dataList;

}


以下是使用PHPExcelExcel文件中的数据导入数据库的步骤: 1. 首先,您需要安装PHPExcel库。您可以从官方GitHub存储库中获取最新版本的PHPExcel。下载后,将库的文件解压缩到您的项目目录中。 2. 创建一个名为“import_excel.php”的PHP文件,并在其中包含PHPExcel库中的“PHPExcel.php”文件。 3. 在“import_excel.php”文件中,创建一个HTML表单,允许用户上传Excel文件。 4. 在PHP文件中,使用以下代码将Excel文件中的数据读取到PHP数组中: ```php require_once 'PHPExcel.php'; $excel = PHPExcel_IOFactory::load($_FILES['file']['tmp_name']); $sheet = $excel->getActiveSheet(); $rows = array(); foreach ($sheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(FALSE); $cells = array(); foreach ($cellIterator as $cell) { $cells[] = $cell->getValue(); } $rows[] = $cells; } ``` 5. 将数组中的数据插入到数据库中。您可以使用MySQLi或PDO等PHP扩展来执行此操作。以下是一个使用MySQLi的示例: ```php $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } foreach ($rows as $row) { $sql = "INSERT INTO table_name (column1, column2, column3) VALUES ('" . $row[0] . "', '" . $row[1] . "', '" . $row[2] . "')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } $conn->close(); ``` 6. 在浏览器中打开“import_excel.php”文件,并上传Excel文件。数据将被导入数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值