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

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

要用到的工具:

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

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

1.设计MySQL数据库product

创建product数据库

CREATE DATABASE product DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创建pro_info表,表结构

CREATE TABLE pro_info(
pId int(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
pName varchar(20) NOT NULL,
pPrice float NOT NULL,
pCount float NOT NULL
);

2.生成项目

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

<?php

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

3.上传文件表单

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

<!DOCTYPE html>

<html>
  <head>
    <title>上传文件</title>
    <meta charset="UTF-8">
  </head>
  <body>
    <form id="upload" action="__URL__/upload/" method="post" enctype="multipart/form-data">
      <label for="file">上传文件:</label>
      <input type="file" name="file" id="file"><br />
      <input type="submit" name="submit" value="上传" />
    </form>
  </body>
</html>

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

<?php

/**
*
* 导入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.测试

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, phpexcel导入数据库
批量导入数据库
mysql示例数据库下载、mysql示例数据库、mysql官方示例数据库、mysql数据库设计实例、mysql数据库实例,以便于您获取更多的相关知识。

时间: 2024-10-03 12:29:16

PHP上传Excel文件导入数据到MySQL数据库示例_php实例的相关文章

php+js实现图片的上传、裁剪、预览、提交示例_php实例

首先用到的语言是php.插件imgareaselect(下载地址),没有太多花哨的样式,index.php代码如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.or

批量导入-extjs,上传excel文件后报SyntaxError: syntax error错误,纠结一下午了,请大神

问题描述 extjs,上传excel文件后报SyntaxError: syntax error错误,纠结一下午了,请大神 基本代码如下: form.getForm().submit({ url : importWhiteUserUrl, method : 'POST', success : function(form, action) { Ext.MessageBox.alert('信息', action.result.showmessage); _this.loadData(); win1.c

在A服务器的客户端页面 上传视频文件及数据到B服务器端的返回一个数

问题描述 需求:在A服务器的客户端页面上传视频文件及数据到B服务器端的返回一个数分析:现在我在A服务器有一个上传的页面,用户上传视频文件到B服务器,可以一边上传,用户一边填写视频信息,上传的信息到B服务器.然后再从B服务器返回视频ID到A服务器,A服务器根据视频ID信息查询视频的一些信息添加到A服务器的数据看里.如新浪播客土豆等一些网站.有没有做过这方面的人.我想问下实现这个需求的解决方法.如果你是一个善于思考的人就发表下自己的意见.

在WEB页面上将EXCEL文件导入、导出到数据库中

excel|web|数据|数据库|页面 笔者由于工作需要,在OA系统中,需要将EXCEL文件的内容导入到数据库中,同时还需要将数据库中的内容导出到EXCEL文件中.笔者的OA是用PHP开发的,并且应用在WEB页面上,所以直接用PHP处理难度比较大.经过研究,笔者用DELPHI开发了一个ACTIVEX控件,来处理EXCEL文件的数据,然后将数据提交到服务器上,再保存到数据库中,轻松的实现了EXCEL文件数据的导入.导出没有用ACTIVEX控件,直接用PHP处理.方法是将数据直接生成CSV文件,因为

php上传大文件失败的原因及应对策略_php技巧

为什么上传大文件总是失败,但是上传小文件就没有问题.小编也不得其解,网上搜其原因,整理了一篇关于php上传大文件失败的原因和解决办法的文章,分享给大家. 下面分别是各种原因以及解决办法:第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定则 PHP 使用系统默认值. php.ini文件中upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件并对该文件夹有写入的权限. 第2种情况:max_e

winform把excel文件导入到sql server数据库中

问题描述 winform把excel文件导入到sqlserver数据库中就是点击导入按钮就把excel相应的数据导入到sqlserver中,需要详细的代码希望代码带注释谢谢! 解决方案 解决方案二:最简单方法,选择表,进入编辑状态1.CTRL+C2.CTRL+V解决方案三:Aspose.Cells,将文件读取到datatable中然后再将datatable里面的内容通过Insert语句也好,SqlBulkCopy也行,添加到数据库中解决方案四:将excel表看成数据库,里面的sheet看作表,导

WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法_php技巧

今天在网页上传图片到博客,结果提示:"无法将上传的文件移动至 /home/wwwroot/wp-content/uploads/2013/",郁闷了,认为是权限问题,修改了文件,都改成了777的权限,但是还是不可以写入,图片无法上传. 索性,我查看了我的网站根目录文件夹的权限,显示是www ,www  ,而用ps aux|grep nginx 显示的是nobody 的身份运行nginx的子程序,ps aux|grep php-fpm,显示的也是nobody.同时发现,我网站里的其他的文

php上传Excel文件时如何判断文件中有图片

 代码如下 复制代码 $excelPath = 'Test.xls';    $objReader = PHPExcel_IOFactory::createReader('Excel5');  $objReader->setReadDataOnly(true);    $objPHPExcel = $objReader->load($excelPath);  $currentSheet = $objPHPExcel->getActiveSheet();  $AllImages= $cur

在java web开发中,怎样获取上传视频文件时长?

问题描述 Struts2+Spring+Hibernate项目怎样来获得上传视频文件的时长?数据库的字段应该设置成time类型的还是timestamp类型?