ThinkPHPがExcelファイルをアップロードしてMySQLデータベースにデータをインポートする例
4473 ワード
この記事では、主にPHPがExcelファイルをアップロードしてMySQLデータベースにデータをインポートした例について説明します.
最近Excelファイルを作ってデータベースにデータをインポートしています.ウェブサイトはもし大量にデータを挿入することを支持したいならば、1つの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テーブル
2.プロジェクトの生成
まずThinkPHP同級ディレクトリの下にindexを新規作成する.phpファイル、プロジェクトHomeを生成する.
3.ファイルフォームのアップロード
Home/Toplフォルダの下にIndexフォルダを新規作成し、中にindexを新規作成します.htmlファイル
4./Home/Lib/Action/indexAction.class.phpではフォームのアップロードページの表示、Excelファイルのアップロード、Excelファイルのインポート方法を記述します(ThinkPHP/Extendの下に拡張パッケージがない場合は、ThinkPHP公式サイトでダウンロードし、拡張パッケージを解凍する必要があります)
最近Excelファイルを作ってデータベースにデータをインポートしています.ウェブサイトはもし大量にデータを挿入することを支持したいならば、1つの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を生成する.
3.ファイルフォームのアップロード
Home/Toplフォルダの下にIndexフォルダを新規作成し、中にindexを新規作成します.htmlファイル
4./Home/Lib/Action/indexAction.class.phpではフォームのアップロードページの表示、Excelファイルのアップロード、Excelファイルのインポート方法を記述します(ThinkPHP/Extendの下に拡張パッケージがない場合は、ThinkPHP公式サイトでダウンロードし、拡張パッケージを解凍する必要があります)
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 " !";
}
}
}
?>