PHP实现导入excel表格的代码

46 篇文章 0 订阅
37 篇文章 0 订阅
 /*
*导入cvs文件
*/
public function import()
{
    $a = __FUNCTION__;
   $t=isset($_REQUEST['t'])?$_REQUEST['t']:1;
   $table = $this->arr_table[$t];
   if(isset($_REQUEST['method'])&&($_REQUEST['method'] == 'save_do'))
   {
      $gourl = ADMIN_URL."index.php?c={$this->control}&t={$t}";
        if($_FILES['filedata']['error'] > 0)
       {
                 js_local_go($gourl.'&a='.$a, '上传失败!', 'self');
                 exit;
            }
       if(!file_exists($_FILES['filedata']['tmp_name']))
       {
            $gourl = ADMIN_URL."index.php?c={$this->control}&a=data_list&t={$t}";
            js_local_go($gourl.'&a='.$a, '上传文件不存在!', 'self');
            exit;
       }
       if('.csv'!=strrchr($_FILES['filedata']['name'],'.'))
       {
            $gourl = ADMIN_URL."index.php?c={$this->control}&a=data_list&t={$t}";
            js_local_go($gourl.'&a='.$a, '你上传的不是cvs文件!', 'self');
                 exit;
       }
       //打开临时文件
       $count = file_put_contents($_FILES['filedata']['tmp_name'], $this->_trans2utf8($_FILES['filedata']['tmp_name']));
           if (!$count) {
              echo "<center><br><br>文件编码转换失败,中文内容可能将不会被读取。";
           }
            $file = fopen($_FILES['filedata']['tmp_name'],'r');
       //第一行是否写入
       $data = fgetcsv($file);
      
       $param = array();
       switch($t)
            {
              case 1: 
              {
               $param['prize_name'] = $data[0];
               $param['prize_init'] = $data[1];
               $param['drip_num'] = $data[2];
               $param['prize_id_boy'] = $data[3];
               $param['prize_id_girl'] = $data[4]; 
               $param['prize_by'] = $data[5];
               $param['probability'] = $data[6]; 
               $param['quantity'] = $data[7]; 
               $param['use_method'] = $data[8]; 
               break;
              }
              case 2:
              {
               $param['prize_name'] = $data[0]; 
               $param['prize_id_boy'] = $data[1];
               $param['prize_id_girl'] = $data[2];  
               $param['use_method'] = $data[3]; 
               $param['quantity'] = $data[4]; 
               $param['probability'] = $data[5]; 
               break;
              }
              case 3:
              {
               $param['prize_name'] = $data[0]; 
               $param['prize_id_boy'] = $data[1];
               $param['prize_id_girl'] = $data[2];  
               $param['quantity'] = $data[3]; 
               $param['probability'] = $data[4];
               $param['img_path']=$data[5];
               $param['table_type']=$data[6];
               $param['use_method']=$data[7];
               break;
              }
              default:
            }
        $this->model->insert_data($table,$param);
            while ($data = fgetcsv($file))
       {
        switch($t)
            {
              case 1: 
              {
               $param['prize_name'] = $data[0];
               $param['prize_init'] = $data[1];
               $param['drip_num'] = $data[2];
               $param['prize_id_boy'] = $data[3];
               $param['prize_id_girl'] = $data[4]; 
               $param['prize_by'] = $data[5];
               $param['probability'] = $data[6]; 
               $param['quantity'] = $data[7]; 
               $param['use_method'] = $data[8]; 
               break;
              }
              case 2:
              {
               $param['prize_name'] = $data[0]; 
               $param['prize_id_boy'] = $data[1];
               $param['prize_id_girl'] = $data[2];  
               $param['use_method'] = $data[3]; 
               $param['quantity'] = $data[4]; 
               $param['probability'] = $data[5]; 
               break;
              }
              case 3:
              {
               $param['prize_name'] = $data[0]; 
               $param['prize_id_boy'] = $data[1];
               $param['prize_id_girl'] = $data[2];  
               $param['quantity'] = $data[3]; 
               $param['probability'] = $data[4];
               $param['img_path']=$data[5];
               $param['table_type']=$data[6];
               $param['use_method']=$data[7];
               break;
              }
              default:
            }
       $this->model->insert_data($table,$param);
       }
       //关闭
       fclose($file);
       //删除临时文件
            unlink($_FILES['filedata']['tmp_name']);
       js_local_go($gourl, '上传成功,请不要重复上传', 'self');
            exit;
   }
   else
   {
       load_view('admin/up_file');
   }
}


   //将文件转成utf8编码
function _trans2utf8($filename) {
    $content = file_get_contents($filename);   
    if (function_exists('mb_detect_encoding')) {
        $original_encode = mb_detect_encoding($content, "UTF-8, GB2312, GBK");
        $content = mb_convert_encoding($content, 'UTF-8', $original_encode);
    }
    else {
        $content = iconv('GB2312', 'UTF-8', $content);
    }
    return $content;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值