<?php
$handle = fopen("./home.csv","r");
 while($items = fgetcsv($handle,1000)){
      foreach($items as $k=>$v){
          $v = iconv('gb2312','utf-8',$v); 
          var_dump($v);
      }  
 }

解决方案 »

  1.   

    我也很需要这样的程序,我想把EXCEL通过PHP导入到帝国CMS的MYSQL里边,不清楚该怎么实现。
      

  2.   

    你要看excel 数据?就是个自己随便建的一个excel表格。数据都随便。
      

  3.   

    phpmyadmin有这个功能,或者你可以用mysql的LOAD DATA INFILE语句
      

  4.   

    我要用utf-8 编码。excel表格有编码格式吗?
    我要把excel数据导入到数据库中。
    现在做到了php读取excel数据后 输出的数据都乱码了。
      

  5.   

    以前是先建立个excel文件,写入数据(随便写的),然后把后缀名改成.csv 这样读数据是乱码。
    但是后来我先建立个.txt 文件 然后把后缀改成.csv 在写入数据 就不乱码了。
    可是 如果数据是中文的话 读不出来 是空的。<?php
    $row = 1;
    echo base64_encode( file_get_contents('test.csv') );
    $handle = fopen("test.csv","r");
    while ($data = fgetcsv($handle, 1000, ",")) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
         $data[$c] = iconv('utf-8','utf-8',$data[$c]);
            echo $data[$c] . "<br>\n";
        }
    }
    fclose($handle);员工编号 姓名 员工部门 基本工资 岗位工资 养老保险 医疗保险 失业保险 工资 实际工资 权限ID
    ABC001   小王   开发      2500     100    20        30       40    3000   3200    0
    ABC002 小李 开发 2500 100 20 30 40 3000 3200 0
    ABC003 小赵 开发 2500 100 20 30 40 3000 3200 0
    ABC004 小东 开发 2500 100 20 30 40 3000 3200 0
    ABC005 小贝 开发 2500 100 20 30 40 3000 3200 0就是这样的csv文件
      

  6.   

    你不是有 echo base64_encode( file_get_contents('test.csv') ); 吗?
    贴出他的结果!
      

  7.   

    c3RhZmZfaWQsc3RhZmZfbmFtZSxicmFuY2gsYmFzaWNfd2FnZSxwb3N0X3dhZ2VzLG9sZF9hZ2VfaW5zdXJhbmNlLG1lZGljYWxfaW5zdXJhbmNlLHVuZW1wbG95bWVudF9pbnN1cmFuY2Usd2FnZSxyZWFsX3dhZ2VzLHBlcm1pc3Npb25zX2lkDQpBQkMwMDEs0KHN9Sy/qreiLDI1MDAsMTAwLDIwLDMwLDQwLDMwMDAsMzIwMCwwDQpBQkMwMDIs0KHA7iy/qreiLDI1MDAsMTAwLDIwLDMwLDQwLDMwMDAsMzIwMCwwDQpBQkMwMDMs0KHV1Cy/qreiLDI1MDAsMTAwLDIwLDMwLDQwLDMwMDAsMzIwMCwwDQpBQkMwMDQs0KG2qyy/qreiLDI1MDAsMTAwLDIwLDMwLDQwLDMwMDAsMzIwMCwwDQpBQkMwMDUs0KGxtCy/qreiLDI1MDAsMTAwLDIwLDMwLDQwLDMwMDAsMzIwMCwwDQo=
      

  8.   

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

  9.   


    你能说说什么BUG?现在是有的中文能显示 有的不能。有什么解决的方法?
      

  10.   

    $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);  
      

  11.   

    在 csv 格式标准中:字符串是需要用双引号括起的,但微软的工具软件却偏偏不加这个双引号
    在 php5.3 以前的版本中,php 也认同这种做法
    但自 php5.3 起,微软摆出了不合作姿态,于是 fgetcsv 也就残废了
      

  12.   

    对于我在 #8 写的csv数据我输出了一下是:Array
    (
        [0] => staff_id
        [1] => staff_name
        [2] => branch
        [3] => basic_wage
        [4] => post_wages
        [5] => old_age_insurance
        [6] => medical_insurance
        [7] => unemployment_insurance
        [8] => wage
        [9] => real_wages
        [10] => permissions_id
        [11] => ABC001
        [12] => 小王
        [13] => 
        [14] => 2500
        [15] => 100
        [16] => 20
        [17] => 30
        [18] => 40
        [19] => 3000
        [20] => 3200
        [21] => 0
        [22] => ABC002
        [23] => 小李
        [24] => 
        [25] => 2500
        [26] => 100
        [27] => 20
        [28] => 30
        [29] => 40
        [30] => 3000
        [31] => 3200
        [32] => 0
        [33] => ABC003
        [34] => 小赵
        [35] => 
        [36] => 2500
        [37] => 100
        [38] => 20
        [39] => 30
        [40] => 40
        [41] => 3000
        [42] => 3200
        [43] => 0
        [44] => ABC004
        [45] => 小东
        [46] => 
        [47] => 2500
        [48] => 100
        [49] => 20
        [50] => 30
        [51] => 40
        [52] => 3000
        [53] => 3200
        [54] => 0
        [55] => ABC005
        [56] => 小贝
        [57] => 
        [58] => 2500
        [59] => 100
        [60] => 20
        [61] => 30
        [62] => 40
        [63] => 3000
        [64] => 3200
        [65] => 0
    )
    这样的数组。字段在数据库都有了,只要把数据拿出来插入就行。
    但是员 工部门 值都是空的。
      

  13.   

    excel编辑的csv文件是有其他字符的。
      

  14.   

    把csv另存为utf-8、或者用php excelreader
      

  15.   

    读取文件  我建议你还是用gbk编码吧,不要迷恋utf8
      

  16.   

    读取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 < $num; $c++) {  
    12.if($c==$num-1){$sql=$sql.$data[$c].”‘)”;break;}  
    13.$sql=$sql.$data[$c].”‘,’”;  
    14.}  
    15.print “< br>”;  
    16.echo $sql.”< br>”;  
    17.$db->query($sql);  
    18.echo “SQL语句执行成功!< br>”;  
    19.$sql=”insert into scores(idcard,names ,num,sex,nation,score) values(’”;  
    20.}  
    21.fclose ($handle);  
    22.$time_end = getmicrotime();  
    23.$time = $time_end – $time_start;  
    24.echo “程序执行时间:”.$time.”秒”;  
    具体请参考:http://www.phpnewer.com/index.php/Ymgx/detail/id/41