tp5实现导入excel表到数据库

hello,大家好,好长时间没有更新文章了。最近一直在忙着做项目。所以断更了。
那么好,各位老铁是否想要实现导入导出的功能 请关注我,解密如何实现导入导出,
那么今天先来讲一下用thinkphp5.0 如何实现Excel表格导入数据到数据库
1.前提准备:
正常的流程是前端客户端上传excel文件到服务器上,然后通过代码解析解码然后存入到数据库里。
这里我们用到一个依赖叫phpExcle依赖。github下载地址:https://github.com/PHPOffice/PHPExcel
下载之后我们讲Classes目录解压出来放到我们tp5框架里面的vendor目录下,并改名为:PHPExcel
在这里插入图片描述
2.使用PHPExcel
在你使用的这个方法下或者是你可以封装一下,放到model里

/**
     * 获取excel文件后缀名
     */
    public function get_excel_name($filename){
        $arr = explode('.',$filename);
        return array_pop($arr);
    }

    /** excel导入数据*/
    public function import_excel_data(){
        vendor("PHPExcel.PHPExcel");
        $objPHPExcel =new \PHPExcel();
        $file = $this->request->file('file');
        $info = $file->validate(['ext' => 'xlsx,xls'])->move(ROOT_PATH . 'public/uploads/excel');  //上传验证后缀名,以及上传之后移动的地址
        if($info)
        {
            $exclePath = $info->getSaveName();  //获取文件名
            $file_name = ROOT_PATH . 'public/uploads/excel/' . DS . $exclePath;//上传文件的地址
            $name =  $this->get_excel_name($file_name);
            if($name ==='xlsx' ){
                $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
            }else {
                $objReader =\PHPExcel_IOFactory::createReader('Excel5');
            }
            $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
            $excel_array=$obj_PHPExcel->getSheet(0)->toArray();   //转换为数组格式
            array_shift($excel_array);  //删除第一个数组(标题);
            $city = [];
            $i=0;
            foreach($excel_array as $k=>$v) {
                $city[$k]['keyword']   = isset($v[0])?$v[0]:"无";
                $i++;
            }
            $count=db('auto_keyword')->insertAll($city);
            $data = [
                'count'=>$count
            ];
            $this->success('ok',$data);
        }else
        {
            $this->error($file->getError());
        }
    }

在这里我们需要改几个文件:
PHPExcel/PHPExcel/Shared/String.php下面的“utf16_decode”方法,把{0}、{1}改成[0]、[1]
PHPExcel/PHPExcel/ReferenceHelper.php下面的“updateSingleCellReference”方法,把{0}、{1}改成[0]、[1]
PHPExcel/PHPExcel/Cell.php下面的“columnIndexFromString”方法,把{0}、{1}改成[0]、[1]
3.本地请求结果如下:
在这里插入图片描述4.数据库和excel文件数据对比一下
这两张表对比一下,然后再看上面的代码就更好操作了。这里的数据库的主键是自动递增的。其他的数据一一对应就OK了。
1>.这是excel表里的数据
在这里插入图片描述2>.这是数据库里的数据
在这里插入图片描述

好了。导入就讲到这里了。有用的小伙伴记得收藏关注我。这段代码亲测有效哦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!对于TP6(ThinkPHP 6)框架,您可以使用PHPExcel或PhpSpreadsheet库来导入Excel文件。以下是一个简单的示例代码: 首先,您需要安装PHPExcel或PhpSpreadsheet库。您可以通过Composer进行安装: ``` composer require phpoffice/phpspreadsheet ``` 然后,您可以创建一个控制器方法来处理Excel文件导入: ```php use PhpOffice\PhpSpreadsheet\IOFactory; class ExcelController extends \think\Controller { public function import() { // 获取上传的Excel文件 $file = $this->request->file('excel_file'); // 读取Excel文件 $spreadsheet = IOFactory::load($file->getRealPath()); // 获取第一个工作表 $worksheet = $spreadsheet->getActiveSheet(); // 循环读取数据 foreach ($worksheet->getRowIterator() as $row) { $rowData = []; foreach ($row->getCellIterator() as $cell) { $rowData[] = $cell->getValue(); } // 在这里可以对每一行的数据进行处理,比如保存到数据库等操作 // $rowData 包含了一行的数据,可以根据需要进行处理 } // 导入成功后的操作... return '导入成功!'; } } ``` 在上面的代码中,我们首先使用`IOFactory::load()`方法加载Excel文件,然后获取第一个工作表,并循环读取每一行的数据。您可以根据需要对每一行的数据进行处理,如保存到数据库等操作。 请注意,上述代码仅是一个简单的示例,您可能需要根据实际需求进行适当的修改。同时,还需要添加文件上传表单以及相应的路由配置。 希望这可以帮助到您!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

于先生吖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值