php读取excel文件,输出的值乱码解决方法

WBOY
Libérer: 2016-06-13 10:16:05
original
1119 Les gens l'ont consulté

php读取excel文件,输出的值乱码
$handle = fopen("./home.csv","r");
 while($items = fgetcsv($handle,1000)){
  foreach($items as $k=>$v){
  $v = iconv('gb2312','utf-8',$v); 
  var_dump($v);
  }  
 }

------解决方案--------------------
明白了,你说的是这个问题
这是 php5.3 的一个BUG,php5.2 是正常的

你得换个方法解决了
------解决方案--------------------

PHP code
$fname = $_FILES['MyFile']['tmp_name'];//获取上传的CSV文件    $handle=fopen("$fname","r");//打开文件        //判断导入文件类型是否为csv    //如果为csv继续执行    if($_FILES['MyFile']['type'] !='application/vnd.ms-excel')    {    if($_FILES['MyFile']['type'] != 'text/comma-separated-values')      {        echo "<script>alert('您上传的文件类型不符,请重新上传');window.location='subHotel_import.php';</script>";exit();      }    }              $num = 1;        $total_num = 100;//设置每次添加的数据条数        //删除表中原有数据       $db->query("delete from hotel_activities_2");      //打开导入的csv      //循环添加到表中      while(!feof($handle))        {                                    $content = fgets($handle);            $data =  preg_split("/,/",$content);                      if($data[0] =='')            {                   continue;            }                 $subHotel_id = preg_replace('/[^0-9]/','',$data[0]);            $subHotel_type= (int)preg_replace('/[^0-9]/','',$data[4]);            if($num == $total_num )            {                                $num=1;                   $values .=  " ($subHotel_id,'".$data[1]."','".$data[2]."','".$data[3]."',$subHotel_type),";                   $values = rtrim($values,',');                                $sql ="insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values " .$values;                                $aaa = $db->query($sql);                                $values ='';            }            else             {                $values .=  " ($subHotel_id,'".$data[1]."','".$data[2]."','".$data[3]."',$subHotel_type),";                $num++;                        }                       }        if(mysql_error!==1){            $values = rtrim($values,',');            $sql ="insert into hotel_activities_2 (hotel_id,start_date,end_date,content,s_type) values " .$values;                 $db->query($sql);                               echo "<script>alert('导入成功!!!');window.location='subHotel_query_file.php';</script>";            }else            {            echo "<script>alert('导入失败!!!');window.location='subHotel_import.php';</script>";            }                                             fclose($handle);<br><font color="#e78608">------解决方案--------------------</font><br>在 csv 格式标准中:字符串是需要用双引号括起的,但微软的工具软件却偏偏不加这个双引号<br>在 php5.3 以前的版本中,php 也认同这种做法<br>但自 php5.3 起,微软摆出了不合作姿态,于是 fgetcsv 也就残废了<br><font color="#e78608">------解决方案--------------------</font><br>读取excel数据要用到一个插件,直接这样读取肯定是不行的。<br>下面这个是将ecxcel数据读取到数据库的方法:<br>7.$handle = fopen (”test.csv”,”r”); <br>8.$sql=”insert into scores(idcard,names ,num,sex,nation,score) values(’”; <br>9.while ($data = fgetcsv ($handle, 1000, “,”)) { <br>10.$num = count ($data); <br>11.for ($c=0; $c 12.if($c==$num-1){$sql=$sql.$data[$c].”‘)”;break;} <br>13.$sql=$sql.$data[$c].”‘,’”; <br>14.} <br>15.print “”; <br>16.echo $sql.””; <br>17.$db->query($sql); <br>18.echo “SQL语句执行成功!”; <br>19.$sql=”insert into scores(idcard,names ,num,sex,nation,score) values(’”; <br>20.} <br>21.fclose ($handle); <br>22.$time_end = getmicrotime();<div class="clear">
                 
              
              
        
            </div>
Copier après la connexion
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal