php实现excel表格的转置

不知道取这个标题合不合适,大概的需求是这样,辅导员给了我们一个这样的excel表格,

在这个excel表格中,每行是一个学生的一门科目的记录,最终想做成,这样的效果,一个学生的所有科目占一行

(已经做出来的是这个效果)

于是,我想着使用php实现了这个功能

----------------------------------------------------------------------------------------------

整体思路大概这样,先将excel表格导入mysql数据库,然后通过select选择出所有的数据,遍历,按要求筛选,

构造期望的数据结构(数组),再插入到一个新的表。

 1 <?php
 2 namespace Student\Controller;  
 3 use Think\Controller;
 4 use Think\Model;
 5 
 6 class ZongceController extends Controller {
 7     public function index($name){    
 8         $info = M('aaaad')->where(array('D' => $name))->select();
 9         $Mark = D('aaaac');
10 
11         $number = $info[0]['C'];
12         $class = $info[0]['I'];
13         $arr = array(
14             'A' => $name,
15             'B' => $number,
16             'C' => $class,
17         );
18         $sum = 0;
19         $xuefen = 0;
20 
21         $lessen = $Mark->where(array('A' => '姓名'))->find();
22         foreach ($info as $key => $value) {
23             if(!empty($value['R']) || !empty($value['N']))
24                 if($value['R'] === '专业选修课' || $value['R'] === '专业核心课')
25                 {
26                     $key = array_keys($lessen, $value['L']);
27                     $arr[$key[0]] = $value['N'];
28                     if (strlen($key[0]) === 1) {
29                         $arr[chr(ord($key[0])+1)] = $value['M'];
30                     } else {
31                         $key1 = "A".chr(ord(substr($key[0], strlen($key[0])-1, 1))+1);
32                         $arr[$key1] = $value['M'];
33                     }
34                     $sum += $value['N'] * $value['M']; //分数
35                     $xuefen += $value['M']; //学分
36                 }
37         }
38         $arr['zongfen'] = $sum;
39         $arr['xuefen'] = $xuefen;
40         $arr['jiaquan'] = $sum / $xuefen;
41         p($arr);
42         $Mark->add($arr);
43     }
44 
45     public function api()
46     {
47         $info = M('aaaad');
48         $name = $info->distinct(true)->field('D')->select();
49         foreach ($name as $key => $value) {
50             $this->index($value['D']);
51         }
52     }
54 }

 

posted @ 2017-03-04 19:11  大波非猫  阅读(574)  评论(0编辑  收藏  举报