加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP上传Excel文件导入数据到MySQL数据库示例

发布时间:2020-12-12 21:48:37 所属栏目:PHP教程 来源:网络整理
导读:最近在做Excel文件导入数据到数据库。网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序。 要用到的工具: ThinkPHP:轻量级国产PHP开发框架。可在ThinkPHP官网下载。 PHPExcel:Office Excel 文档的一个PHP

最近在做Excel文件导入数据到数据库。网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序。

要用到的工具:

ThinkPHP:轻量级国产PHP开发框架。可在ThinkPHP官网下载。

PHPExcel:Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可在CodePlex官网下载。、

1.设计MySQL数据库product

创建product数据库

创建pro_info表,表结构

2.生成项目

先在ThinkPHP同级目录下新建index.php文件,生成项目Home.

define('APP_NAME','Home'); //项目名称
define('APP_PATH','./Home/'); //项目路径
define('APP_DEBUG',true); //开启DEBUG
require './ThinkPHP/ThinkPHP.php'; //引入ThinkPHP核心运行文件
?>

3.上传文件表单

在Home/Tpl文件夹下新建Index文件夹,里面新建index.html文件

上传文件

4.在/Home/Lib/Action/IndexAction.class.php中编写显示上传表单页面、上传Excel文件、导入Excel文件方法(如果ThinkPHP/Extend下没有扩展包,需要在ThinkPHP官网下载,然后将扩展包解压放入)

/**

  • 导入Excel文件数据到MySQL数据库
    */
    class IndexAction extends Action {

    /**

    • 显示上传表单html页面
      */
      public function index() {
      $this->display();
      }

    /**

    • 上传Excel文件
      */
      public function upload() {
      //引入ThinkPHP上传文件类
      import('ORG.Net.UploadFile');
      //实例化上传类
      $upload = new UploadFile();
      //设置附件上传文件大小200Kib
      $upload->mixSize = 2000000;
      //设置附件上传类型
      $upload->allowExts = array('xls','xlsx','csv');
      //设置附件上传目录在/Home/temp下
      $upload->savePath = './Home/temp/';
      //保持上传文件名不变
      $upload->saveRule = '';
      //存在同名文件是否是覆盖
      $upload->uploadReplace = true;
      if (!$upload->upload()) { //如果上传失败,提示错误信息
      $this->error($upload->getErrorMsg());
      } else { //上传成功
      //获取上传文件信息
      $info = $upload->getUploadFileInfo();
      //获取上传保存文件名
      $fileName = $info[0]['savename'];
      //重定向,把$fileName文件名传给importExcel()方法
      $this->redirect('Index/importExcel',array('fileName' => $fileName),1,'上传成功!');
      }
      }

    /**

    • 导入Excel文件
      */
      public function importExcel() {
      header("content-type:text/html;charset=utf-8");
      //引入PHPExcel类
      vendor('PHPExcel');
      vendor('PHPExcel.IOFactory');
      vendor('PHPExcel.Reader.Excel5');

    //redirect传来的文件名
    $fileName = $_GET['fileName'];

    //文件路径
    $filePath = './Home/temp/' . $fileName . '.xlsx';
    //实例化PHPExcel类
    $PHPExcel = new PHPExcel();
    //默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
    $PHPReader = new PHPExcel_Reader_Excel2007();
    if (!$PHPReader->canRead($filePath)) {
    $PHPReader = new PHPExcel_Reader_Excel5();
    if (!$PHPReader->canRead($filePath)) {
    echo 'no Excel';
    return;
    }
    }

    //读取Excel文件
    $PHPExcel = $PHPReader->load($filePath);
    //读取excel文件中的第一个工作表
    $sheet = $PHPExcel->getSheet(0);
    //取得最大的列号
    $allColumn = $sheet->getHighestColumn();
    //取得最大的行号
    $allRow = $sheet->getHighestRow();
    //从第二行开始插入,第一行是列名
    for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
    //获取B列的值
    $name = $PHPExcel->getActiveSheet()->getCell("B" . $currentRow)->getValue();
    //获取C列的值
    $price = $PHPExcel->getActiveSheet()->getCell("C" . $currentRow)->getValue();
    //获取D列的值
    $count = $PHPExcel->getActiveSheet()->getCell("D" . $currentRow)->getValue();

    $m = M('Info');
    $num = $m->add(array('pName' => $name,'pPrice' => $price,'pCount' => $count));

    }
    if ($num > 0) {
    echo "添加成功!";
    } else {
    echo "添加失败!";
    }
    }

}
?>

5.测试

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读