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

最近在做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上传Excel文件导入数据到MySQL数据库示例 的全部内容, 来源链接: utcz.com/z/333943.html

回到顶部