이 글에서는 주로 PHP를 사용하여 Excel 파일을 MySQL 데이터베이스에 업로드하는 예제를 소개합니다. 관심 있는 학생들은 이에 대해 배울 수 있습니다.
최근에 Excel 파일의 데이터를 데이터베이스로 가져오고 있습니다. 웹 사이트에서 일괄 데이터 삽입을 지원하려는 경우 Excel 파일을 업로드하고 데이터 콘텐츠를 MySQL 데이터베이스로 가져오는 작은 프로그램을 만들 수 있습니다.
사용 도구:
ThinkPHP: 경량 국내 PHP 개발 프레임워크. ThinkPHP 공식 홈페이지에서 다운로드 가능합니다.
PHPExcel: Microsoft의 OpenXML 표준 및 PHP 언어를 기반으로 하는 Office Excel 문서용 PHP 클래스 라이브러리입니다. CodePlex 공식 홈페이지에서 다운로드 가능합니다. ,
1. MySQL 데이터베이스 제품 설계
제품 데이터베이스 생성
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. 먼저 동일한 디렉터리에 새 index.php를 생성합니다. ThinkPHP 파일로 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. /Lib/Action/IndexAction.class 업로드 양식 페이지를 표시하고, Excel 파일을 업로드하고, Excel 파일을 .php로 가져오는 메소드 작성(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. Test
관련 권장 사항:
ThinkPHP3.2.2 플러그인 컨트롤러 기능위 내용은 PHP는 Excel 파일을 업로드하여 데이터를 MySQL 데이터베이스로 가져옵니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!