zoukankan      html  css  js  c++  java
  • php导入导出cvs文件格式

    1、导入

    <?php
    
    header("Content-type: text/html; charset=gb2312");   
    
    $fname = $_FILES['myfile']['tmp_name']; 
     
    error_reporting(0);// 导入csv格式的文件 
    
    $connect=mysql_connect("localhost","root","***") or die("could not connect to database"); 
    
    mysql_select_db("mydb",$connect) or die (mysql_error()); 
    
    mysql_query("set names 'gbk'"); 
    
    if(file_exists($fname)){
    	
        $handle = fopen($fname, 'r'); 
    
        $result = input_csv($handle); //解析csv 
    	
    	$len_result = count($result); 
    	 
    	if($len_result==0){ 
    	
            echo '没有任何数据!'; 
    		
            exit; 
    		
        } 
    	
    	for ($i = 1; $i < $len_result; $i++) { //循环获取各字段值,从1开始,不插入第一行表头
    	
            //$name = iconv('gb2312', 'utf-8', $result[$i][0]); //中文转码 
    		
            //$sex = iconv('gb2312', 'utf-8', $result[$i][1]); 
    		
    		$name  =  $result[$i][0];
    		
    		$sex  =   $result[$i][1];
    		
    		$age = $result[$i][2]; 
    		
    		$data_values .= "('$name','$sex','$age'),"; 
    		
        } 
    	
        $data_values = substr($data_values,0,-1); //去掉最后一个逗号 
    	
    	fclose($handle); //关闭指针 
    	
    	$sql  =	 "insert into student (name,sex,age) values $data_values";
    	
    	$query = mysql_query($sql);
    	
    	 if($query){ 
    	
            echo '导入成功!'; 
    		
        }else{ 
    	
            echo '导入失败!'; 
    		
        } 
    }else{
    	
    	echo "文件不存在,请重新选择";exit;
    	
    }
    
    
    function input_csv($handle) { 
    
        $out = array (); 
    	
        $n = 0; 
    	
        while ($data = fgetcsv($handle, 10000)) { 
    	
            $num = count($data); 
    		
            for ($i = 0; $i < $num; $i++) { 
    		
                $out[$n][$i] = $data[$i]; 
    			
            } 
    		
            $n++; 
    		
        } 
    	
        return $out; 
    	
    } 
    
    ?>  
    

      

    2、导出

    $result = mysql_query("select * from student order by id asc");
    $str = "姓名,性别,年龄
    ";
    $str = iconv('utf-8','gb2312',$str);
    while($row=mysql_fetch_array($result))
    {
        $name = iconv('utf-8','gb2312',$row['name']); //中文转码
        $sex = iconv('utf-8','gb2312',$row['sex']);
        $str .= $name.",".$sex.",".$row['age']."
    "; //用引文逗号分开
    }
    $filename = date('Ymd').'.csv'; //设置文件名
    export_csv($filename,$str);
    
    function export_csv($filename,$data)
    {
          header("Content-type:text/csv");
          header("Content-Disposition:attachment;filename=".$filename);
          header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
          header('Expires:0'); header('Pragma:public');
          echo $data;
    }
    

      

    附:数据库sql文件

    CREATE TABLE `student` ( 
      `id` int(11) NOT NULL auto_increment, 
      `name` varchar(50) NOT NULL, 
      `sex` varchar(10) NOT NULL, 
      `age` smallint(3) NOT NULL default '0', 
      PRIMARY KEY  (`id`) 
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 
    

      

  • 相关阅读:
    sqlserver游标使用误区
    工作笔记——sqlserver引号的运用
    疯狂JAVA——数组
    工厂模式、单例和多例
    数据库数据交互详解(一)
    2016-4-6
    2016-4-5 博问问题、答题和查看收获
    Maven+Spring Batch+Apache Commons VF学习
    你忽视的静态类的作用(必看)
    Wireshark抓包工具使用教程以及常用抓包规则
  • 原文地址:https://www.cnblogs.com/cblx/p/5116319.html
Copyright © 2011-2022 走看看