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>
mysql下载app<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.测试
感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论