400-800-9385
网站建设资讯详细

PHP网站制作之后台功能Excel文档导入数据表

发表日期:2022-09-14 13:59:33   作者来源:黎云辉   浏览:137   标签:PHP网站制作    
在网站建设过程中,时不时就会遇到需要增加大量数据的情况,比如说产品数据,会员数据之类的,从其他站点搬迁到新的网站上,如果手动一条一条的去增加,那无疑是会浪费大量的时间和精力;而且数据表结构设计在不相同的情况下,也不能完全的直接导入原来的数据表,所以这种情况下,可以把原来的数据表导出为Excel文档,然后再通过导入Excel文档到数据库,这样一来就节省了人力物力以及大量的时间,而且也保证了数据不会丢失。
 数据导入

 

大概的页面是这样的,这里是设置一个Excel文档模板给后台管理人员参考,以免Excel文档结果不对,导致导入数据出错;
 
 待导入Excel
 
Excel文档的结构是这样的,下面做功能程序的时候需要用到;
 

PHP代码块1

这里的ABCDE就是对应Excel文档的列名称,左边对应的就是数据表名称,这里根据个人情况设置即可;
 
 PHP代码块2
 
下面直接贴出代码:
table_excel方法:
public function table_excel(){
 
        if (IS_POST){
            ini_set('memory_limit', '256M');//程序运行内存
            $file_url=I('post.file_url','');
            if($file_url==''){;
                $this->error('请先上传文件');
            }
            $file_url=str_replace('/Uploads','Uploads',$file_url);//去掉第一个斜线,因为取词excel只能用相对路径。
            $array=excelImport($file_url,1,'E');
            //从第一行开始,E列结束,需要修改excelImport($filename, $begin) 为 excelImport($filename, $begin,$allColumn);   去掉 $allColumn = $currentSheet->getHighestColumn();输出$array就知道怎么导入了
            // var_dump($array);exit();
            $ModelObj = D('Member');
 
            if(!count($array)){
             $this->error('上传的文件不正确');
            }
            $lists=array();
            $this->status=1;
            $num=0;
            foreach($array as $key => $var){
 
                $data['title'] = $var['A'];
                $data['number'] = $var['B'];
                $data['courses'] = $var['C'];
                $data['place'] =$var['D'];
                $data['time'] = $var['E'];
 
                $data['order_id'] = 100;
                $data['is_show'] = 1;
                $flag = $ModelObj->data($data)->add();
                if($flag>0){
                   $num++;
                }
            }
                 unset($data);
                 unset($var['A']);
                 unset($var['B']);
                 unset($var['C']);
                 unset($var['D']);
                 unset($var['E']);
 
                 $this->success('成功导入'.$num.'条信息');
        }
                $this->display();
}
 
 
excelImport方法:
/**
 * 读取Excel文件
 */
function excelImport($filename, $begin,$allColumn) {
    Vendor('PHPExcel.PHPExcel');
    //建立reader对象
    $PHPReader = new PHPExcel_Reader_Excel2007();
    if (!$PHPReader->canRead($filename)) {
        $PHPReader = new PHPExcel_Reader_Excel5();
        if (!$PHPReader->canRead($filename)) {
            return array();
        }
    }
 
    //建立excel对象,此时你即可以通过excel对象读取文件,也可以通过它写入文件
    $PHPExcel = $PHPReader->load($filename);
 
    /*     * 读取excel文件中的第一个工作表 */
    $currentSheet = $PHPExcel->getSheet(0);
    /*     * 取得最大的列号 */
  //  $allColumn = $currentSheet->getHighestColumn();
    /*     * 取得一共有多少行 */
    $allRow = $currentSheet->getHighestRow();
 
    $returnCell = '';
    //循环读取每个单元格的内容。注意行从1开始,列从A开始
    for ($rowIndex = $begin; $rowIndex <= $allRow; $rowIndex++) {
        for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) {
            $addr = $colIndex . $rowIndex;
            $cell = $currentSheet->getCell($addr)->getValue();
            if ($cell instanceof PHPExcel_RichText) {
                //富文本转换字符串
                $returnCell[$rowIndex][$colIndex] = $cell->__toString();
            } else {
                $returnCell[$rowIndex][$colIndex] = $cell;
            }
        }
    }
    return $returnCell;
 
}

PHP是一门专门开发网站的语言,非常好用,而且还是开源免费的,配合开源数据库MYSQL,基本天衣无缝。
 
如没特殊注明,文章均为方维网络原创,转载请注明来自https://www.szfangwei.cn/news/6535.html