您好,欢迎访问一九零五行业门户网

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

php读取excel文件,输出的值乱码
$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 ;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 ; }else { echo ; } fclose($handle);
------解决方案--------------------
在 csv 格式标准中:字符串是需要用双引号括起的,但微软的工具软件却偏偏不加这个双引号
在 php5.3 以前的版本中,php 也认同这种做法
但自 php5.3 起,微软摆出了不合作姿态,于是 fgetcsv 也就残废了
------解决方案--------------------
读取excel数据要用到一个插件,直接这样读取肯定是不行的。
下面这个是将ecxcel数据读取到数据库的方法:
7.$handle = fopen (”test.csv”,”r”);
8.$sql=”insert into scores(idcard,names ,num,sex,nation,score) values(’”;
9.while ($data = fgetcsv ($handle, 1000, “,”)) {
10.$num = count ($data);
11.for ($c=0; $c 12.if($c==$num-1){$sql=$sql.$data[$c].”‘)”;break;}
13.$sql=$sql.$data[$c].”‘,’”;
14.}
15.print “”;
16.echo $sql.””;
17.$db->query($sql);
18.echo “sql语句执行成功!”;
19.$sql=”insert into scores(idcard,names ,num,sex,nation,score) values(’”;
20.}
21.fclose ($handle);
22.$time_end = getmicrotime();
其它类似信息

推荐信息