Excel表头转html表头(PHP版本)

近来由于公司做一个内部系统,需要大量的Excel导入导出功能,并且在读表后需在网页上显示出与Excel一样的样式来,刚开始拿到这个东西的时候感觉也没什么,不就读个表么,后面遇到了表头中有合并的列和行时,事情就开始比较棘手了,于是乎寻思着写了一个Excel表头转HTML表头的函数,现在分享出来,简单测试过试用多种表头结构,如果有小伙伴发现问题还请不吝赐教!

直接上代码:

   /**
    * 表头合成html标签
    * @param $thead
    */
   public function theadcomposehtml($thead){
       // 获取列数据
       $cold = array();
       $rowd = array();
       // 组装表头
       foreach($thead as $k => $row){
           // 获取行数据
           $space = array();
           foreach($row as $kcc => $columnc){
               // 计算行
               if(empty($columnc)){
                   if(isset($space[$hand])){
                       $space[$hand] = $space[$hand] + 1;
                   }
               }else{
                   $hand = $kcc;
                   $space[$hand] = 1;
               }

               // 计算列
               if(empty($columnc)){
                   if(isset($cold[$k - 1][$kcc])){
                       $cold[$k - 1][$kcc] = $cold[$k - 1][$kcc] + 1;
                   }
               }else{
                   $cold[$k][$kcc] = 1;
               }
           }
           $rowd[$k] = $space;
       }

       $th = '';
       foreach($thead as $k => $row){
           $th .= '<tr>';
           foreach($row as $kc => $columnc){
               if(!empty($columnc)){
                   if(isset($cold[$k][$kc])){
                       if($cold[$k][$kc] > 1){
                           if(isset($rowd[$k][$kc])){
                               if($rowd[$k][$kc] > 1){
                                   $th .= '<th rowspan="'.$cold[$k][$kc].'" colspan="'.$rowd[$k][$kc].'">'.$columnc.'</th>';
                               }else{
                                   $th .= '<th rowspan="'.$cold[$k][$kc].'">'.$columnc.'</th>';
                               }
                           }else{
                               $th .= '<th rowspan="'.$cold[$k][$kc].'">'.$columnc.'</th>';
                           }
                       }else{
                           if(isset($rowd[$k][$kc])){
                               if($rowd[$k][$kc] > 1){
                                   $th .= '<th colspan="'.$rowd[$k][$kc].'">'.$columnc.'</th>';
                               }else{
                                   $th .= '<th>'.$columnc.'</th>';
                               }
                           }else{
                               $th .= '<th>'.$columnc.'</th>';
                           }
                       }
                   }else{
                       if(isset($rowd[$k][$kc])){
                           if($rowd[$k][$kc] > 1){
                               $th .= '<th colspan="'.$rowd[$k][$kc].'">'.$columnc.'</th>';
                           }
                       }else{
                           $th .= '<th>'.$columnc.'</th>';
                       }
                   }
               }
           }
           $th .= '</tr>';
       }
       return $th;
   }

使用方法:(直接将PHPExcel读到的表头部分直接以数组的形式放进去就可以得到html形式的表头)

// 表头数据
Array
(
    [1] => Array
        (
            [A] => 自编号
            [B] => 车牌号
            [C] => 交强险
            [D] => 
            [E] => 
            [F] => 
            [G] => 
            [H] => 
            [I] => 商业险
            [J] => 
            [K] => 
            [L] => 
            [M] => 
            [N] => 
            [O] => 
            [P] => 
            [Q] => 
        )

    [2] => Array
        (
            [A] => 
            [B] => 
            [C] => 保险单号
            [D] => 起始日期
            [E] => 截止日期
            [F] => 车船税
            [G] => 交强险
            [H] => 保险公司
            [I] => 保险单号
            [J] => 起始日期
            [K] => 截止日期
            [L] => 车损
            [M] => 三者
            [N] => 不计免赔
            [O] => 自燃
            [P] => 承运人
            [Q] => 保险公司
        )
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值