ThinkPHP3.2.3 PHPExcel读取excel插入数据库

Posted cat_crazy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP3.2.3 PHPExcel读取excel插入数据库相关的知识,希望对你有一定的参考价值。

版本 Thinkphp3.2.3 

下载PHPExcel

将这两个文件放到并更改名字

excel文件:

数据库表:

CREATE TABLE `sh_name` (
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

代码:

代码主要在index方法中,有数据提交则写入数据库,否则展示表单

 1 <?php
 2 namespace Home\\Controller;
 3 use Think\\Controller;
 4 use Think\\Upload;
 5 
 6 class IndexController extends Controller {
 7     public function indexAction(){
 8         if(IS_POST){
 9             $file = $_FILES;
10             //上传
11             $path = $this->upload($file);
12             //读取excel
13             $arr = $this->excel($path, 0);
14             //实例化模型
15             $model = D(\'name\');
16             //添加的数据
17             $data = [];
18             for($i=2; $i<=count($arr); $i++){
19                 $data[] = [\'name\'=>$arr[$i][\'A\'], \'age\'=>$arr[$i][\'B\']];
20             }
21             //添加
22             $model->addAll($data);
23         }else{
24             $this->display();
25         }
26         
27     }
28     public function testAction(){
29         echo "<h1>hello world</h1>";
30     }
31     //上传
32     public function upload(){
33         $upload = new Upload();
34         $upload->maxSize = 3145728 ;// 设置附件上传大小
35         $upload->exts = array(\'jpg\', \'gif\', \'png\', \'jpeg\', \'xls\');// 设置附件上传类型
36         $upload->rootPath = APP_PATH . \'Uploads/\'; // 设置附件上传根目录
37         $upload->savePath = \'xls/\'; // 设置附件上传(子)目录
38         // 上传文件
39         $info = $upload->upload();
40         $info = $info[\'inputfile\'];
41         if(!$info) {// 上传错误提示错误信息
42             $this->error($upload->getError());
43         }
44 
45         return APP_PATH . \'Uploads/\' . $info[\'savepath\'] . $info[\'savename\'];
46     }
47 
48     //excel
49     public function excel($filePath=\'\', $sheet=0){
50         
51         import("Org.Util.PHPExcel");
52         import("Org.Util.PHPExcel.Reader.Excel5");
53         import("Org.Util.PHPExcel.Reader.Excel2007");
54 
55         if(empty($filePath) or !file_exists($filePath)){die(\'file not exists\');}
56         $PHPReader = new \\PHPExcel_Reader_Excel2007();        //建立reader对象
57         if(!$PHPReader->canRead($filePath)){
58             $PHPReader = new \\PHPExcel_Reader_Excel5();
59             if(!$PHPReader->canRead($filePath)){
60                  echo \'no Excel\';
61                 return ;
62             }
63         }
64         $PHPExcel = $PHPReader->load($filePath);        //建立excel对象
65         $currentSheet = $PHPExcel->getSheet($sheet);        //**读取excel文件中的指定工作表*/
66         $allColumn = $currentSheet->getHighestColumn();        //**取得最大的列号*/
67         $allRow = $currentSheet->getHighestRow();        //**取得一共有多少行*/
68         $data = array();
69         for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){        //循环读取每个单元格的内容。注意行从1开始,列从A开始
70             for($colIndex=\'A\';$colIndex<=$allColumn;$colIndex++){
71                 $addr = $colIndex.$rowIndex;
72                 $cell = $currentSheet->getCell($addr)->getValue();
73                 if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
74                     $cell = $cell->__toString();
75                 }
76                 $data[$rowIndex][$colIndex] = $cell;
77             }
78         }
79         return $data;
80     }  
81 }

 

以上是关于ThinkPHP3.2.3 PHPExcel读取excel插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP3.2.3 结合 PHPExcel 导出

thinkphp3.2.3集成phpexcel1.8导出设置单元格合并

(超级详细版)利用ThinkPHP3.2.3+PHPExcel实现将表格数据导入到数据库

PHPexcel导出数据

使用PHPEXCEL导入数据到数据库

thinkphp3.2.3 + nginx 配置二级域名