《PHP實例:PHP上傳Excel文件導入數據到MySQL數據庫示例》要點:
本文介紹了PHP實例:PHP上傳Excel文件導入數據到MySQL數據庫示例,希望對您有用。如果有疑問,可以聯系我們。
PHP實戰最近在做Excel文件導入數據到數據庫.網站如果想支持批量插入數據,可以制作一個上傳Excel文件,導入里面的數據內容到MySQL數據庫的小程序.
PHP實戰要用到的工具:
PHP實戰ThinkPHP:輕量級國產PHP開發框架.可在ThinkPHP官網下載.
PHP實戰PHPExcel:Office Excel 文檔的一個PHP類庫,它基于微軟的OpenXML標準和PHP語言.可在CodePlex官網下載.、
PHP實戰1.設計MySQL數據庫product
PHP實戰創建product數據庫
PHP實戰
CREATE DATABASE product DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
PHP實戰創建pro_info表,表結構
PHP實戰
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
);
PHP實戰
PHP實戰2.生成項目
PHP實戰先在ThinkPHP同級目錄下新建index.php文件,生成項目Home.
PHP實戰
<?php
define('APP_NAME', 'Home'); //項目名稱
define('APP_PATH', './Home/'); //項目路徑
define('APP_DEBUG', true); //開啟DEBUG
require './ThinkPHP/ThinkPHP.php'; //引入ThinkPHP核心運行文件
?>
PHP實戰3.上傳文件表單
PHP實戰在Home/Tpl文件夾下新建Index文件夾,里面新建index.html文件
PHP實戰
<!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>
PHP實戰4.在/Home/Lib/Action/IndexAction.class.php中編寫顯示上傳表單頁面、上傳Excel文件、導入Excel文件方法(如果ThinkPHP/Extend下沒有擴展包,需要在ThinkPHP官網下載,然后將擴展包解壓放入)
PHP實戰
<?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 "添加失敗!";
}
}
}
?>
PHP實戰5.測試
PHP實戰
PHP實戰感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/2952.html