PHP上傳Excel文件導(dǎo)入數(shù)據(jù)到MySQL數(shù)據(jù)庫(kù)示例
最近在做Excel文件導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫(kù)。網(wǎng)站如果想支持批量插入數(shù)據(jù),可以制作一個(gè)上傳Excel文件,導(dǎo)入里面的數(shù)據(jù)內(nèi)容到MySQL數(shù)據(jù)庫(kù)的小程序。
要用到的工具:
ThinkPHP:輕量級(jí)國(guó)產(chǎn)PHP開(kāi)發(fā)框架。可在ThinkPHP官網(wǎng)下載。
PHPExcel:Office Excel 文檔的一個(gè)PHP類(lèi)庫(kù),它基于微軟的OpenXML標(biāo)準(zhǔn)和PHP語(yǔ)言??稍贑odePlex官網(wǎng)下載。、
1.設(shè)計(jì)MySQL數(shù)據(jù)庫(kù)product
創(chuàng)建product數(shù)據(jù)庫(kù)
CREATE DATABASE product DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
創(chuàng)建pro_info表,表結(jié)構(gòu)
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.生成項(xiàng)目
先在ThinkPHP同級(jí)目錄下新建index.php文件,生成項(xiàng)目Home.
<?php
define('APP_NAME', 'Home'); //項(xiàng)目名稱(chēng)
define('APP_PATH', './Home/'); //項(xiàng)目路徑
define('APP_DEBUG', true); //開(kāi)啟DEBUG
require './ThinkPHP/ThinkPHP.php'; //引入ThinkPHP核心運(yùn)行文件
?>
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中編寫(xiě)顯示上傳表單頁(yè)面、上傳Excel文件、導(dǎo)入Excel文件方法(如果ThinkPHP/Extend下沒(méi)有擴(kuò)展包,需要在ThinkPHP官網(wǎng)下載,然后將擴(kuò)展包解壓放入)
<?php
/**
*
* 導(dǎo)入Excel文件數(shù)據(jù)到MySQL數(shù)據(jù)庫(kù)
*/
class IndexAction extends Action {
/**
* 顯示上傳表單html頁(yè)面
*/
public function index() {
$this->display();
}
/**
* 上傳Excel文件
*/
public function upload() {
//引入ThinkPHP上傳文件類(lèi)
import('ORG.Net.UploadFile');
//實(shí)例化上傳類(lèi)
$upload = new UploadFile();
//設(shè)置附件上傳文件大小200Kib
$upload->mixSize = 2000000;
//設(shè)置附件上傳類(lèi)型
$upload->allowExts = array('xls', 'xlsx', 'csv');
//設(shè)置附件上傳目錄在/Home/temp下
$upload->savePath = './Home/temp/';
//保持上傳文件名不變
$upload->saveRule = '';
//存在同名文件是否是覆蓋
$upload->uploadReplace = true;
if (!$upload->upload()) { //如果上傳失敗,提示錯(cuò)誤信息
$this->error($upload->getErrorMsg());
} else { //上傳成功
//獲取上傳文件信息
$info = $upload->getUploadFileInfo();
//獲取上傳保存文件名
$fileName = $info[0]['savename'];
//重定向,把$fileName文件名傳給importExcel()方法
$this->redirect('Index/importExcel', array('fileName' => $fileName), 1, '上傳成功!');
}
}
/**
*
* 導(dǎo)入Excel文件
*/
public function importExcel() {
header("content-type:text/html;charset=utf-8");
//引入PHPExcel類(lèi)
vendor('PHPExcel');
vendor('PHPExcel.IOFactory');
vendor('PHPExcel.Reader.Excel5');
//redirect傳來(lái)的文件名
$fileName = $_GET['fileName'];
//文件路徑
$filePath = './Home/temp/' . $fileName . '.xlsx';
//實(shí)例化PHPExcel類(lèi)
$PHPExcel = new PHPExcel();
//默認(rèn)用excel2007讀取excel,若格式不對(duì),則用之前的版本進(jìn)行讀取
$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文件中的第一個(gè)工作表
$sheet = $PHPExcel->getSheet(0);
//取得最大的列號(hào)
$allColumn = $sheet->getHighestColumn();
//取得最大的行號(hào)
$allRow = $sheet->getHighestRow();
//從第二行開(kāi)始插入,第一行是列名
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.測(cè)試

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 教你使用java將excel數(shù)據(jù)導(dǎo)入MySQL
- 如何將Excel文件導(dǎo)入MySQL數(shù)據(jù)庫(kù)
- Springboot上傳excel并將表格數(shù)據(jù)導(dǎo)入或更新mySql數(shù)據(jù)庫(kù)的過(guò)程
- php通過(guò)PHPExcel導(dǎo)入Excel表格到MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單實(shí)例
- 使用phpexcel類(lèi)實(shí)現(xiàn)excel導(dǎo)入mysql數(shù)據(jù)庫(kù)功能(實(shí)例代碼)
- php導(dǎo)入excel文件到mysql數(shù)據(jù)庫(kù)的方法
- phpMyAdmin下將Excel中的數(shù)據(jù)導(dǎo)入MySql的圖文方法
- Excel數(shù)據(jù)導(dǎo)入Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
- MySQL批量導(dǎo)入Excel數(shù)據(jù)(超詳細(xì))
相關(guān)文章
DWZ+ThinkPHP開(kāi)發(fā)時(shí)遇到的問(wèn)題分析
這篇文章主要介紹了DWZ+ThinkPHP開(kāi)發(fā)時(shí)遇到的問(wèn)題,結(jié)合實(shí)例形式分析了DWZ+ThinkPHP在ajax調(diào)用中出現(xiàn)錯(cuò)誤問(wèn)題的解決方法,需要的朋友可以參考下2016-12-12
PHP中使用GD庫(kù)繪制折線圖 折線統(tǒng)計(jì)圖的繪制方法
本文通過(guò)代碼給大家介紹php中使用GD庫(kù)繪制折線圖,涉及到php中GD庫(kù)的一些簡(jiǎn)單使用,本文介紹的非常詳細(xì),感興趣的朋友一起學(xué)習(xí)吧2015-11-11
PHP實(shí)現(xiàn)賽郵SUBMAIL簡(jiǎn)單易用短信通知實(shí)例
這篇文章主要介紹了使用PHP實(shí)現(xiàn)賽郵SUBMAIL的簡(jiǎn)單易用短信通知實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
6個(gè)常見(jiàn)的 PHP 安全性攻擊實(shí)例和阻止方法
這篇文章主要介紹了6個(gè)常見(jiàn)的 PHP 安全性攻擊實(shí)例和阻止方法,有對(duì)這方面感興趣的小伙伴歡迎大家來(lái)閱讀和學(xué)習(xí)2020-12-12
PHP開(kāi)發(fā)框架kohana3 自定義路由設(shè)置示例
這篇文章主要介紹了PHP開(kāi)發(fā)框架kohana3 自定義路由設(shè)置示例,kohana是一個(gè)純PHP5的開(kāi)發(fā)框架,需要的朋友可以參考下2014-07-07
laravel 修改記住我功能的cookie保存時(shí)間的方法
今天小編就為大家分享一篇laravel 修改記住我功能的cookie保存時(shí)間的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10

