1.   阿里云服务器1888元代金券领取
  2.   本网站所有源码包解压密码:www.youhutong.com
登录  帮助问答

PHP导入、导出CSV文件案例教程

小川 网站程序
郑重声明:
  本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,否则后果请用户自负,下载后请24小时内删除。 本站所有内容均不能保证其完整性,不提供任何技术支持,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用。
  如侵犯到任何版权问题,请立即告知本站(侵权投诉),本站将及时删除并致以最深的歉意
查看演示   下载源码  
【温馨提示】源码包解压密码:www.youhutong.com

PHP导入、导出CSV文件案例教程

首先我们先看一下核心PHP处理源码,当然也需要一个html页面来交互一下!

<?php
// +----------------------------------------------------------------------
// | PHP导入、导出CSV文件案例教程     Author:xiaochuan     28126649@qq.com
// +----------------------------------------------------------------------
header("Content-Type:text/html;charset=utf-8");
include_once ("db.php");
$action = $_GET['action'];
############################### 导入文件方法 ##############################
if ($action == 'in') {           
	$filename = $_FILES['file']['tmp_name'];
	if (empty ($filename)) exit('请选择要导入的CSV文件!');

	$handle = fopen($filename, 'r');
	$result = input_csv($handle);     //解析csv
	$len_result = count($result);
	if($len_result==0) exit('没有任何数据!');

	$data = array();
	//循环获取各字段值
	for ($i = 1; $i < $len_result; $i++) { 
		$data[$i-1]['id']   = $result[$i][0]; 
		$data[$i-1]['name'] = iconv('gb2312', 'utf-8', $result[$i][1]); 
		$data[$i-1]['sex']  = iconv('gb2312', 'utf-8', $result[$i][2]);
		$data[$i-1]['age']  = $result[$i][3];
	}
	fclose($handle); 

	if(!empty($data)){
		echo '<pre>';
		echo '导入成功,获得以下数组:(那么后续你就可以自己处理入库了)';
		print_r($data);
		echo '</pre>';
	}else{
		echo '导入失败!';
	}
############################### 导出文件方法 ##############################
}elseif ($action=='out') {      
    $result = mysql_query("select * from user");
    $str = "id,姓名,性别,年龄\n";
    $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 .= $row['id'].",".$name.",".$sex.",".$row['age']."\n";
    }
    $filename = date('Y-m-d').'.csv';
    export_csv($filename,$str);
}
##########################################################################

/**
 * 获取文件中的值
 * @access public
 * @param 
 * @return 
 */
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;
}

/**
 * 下载CSV文件
 * @access public
 * @param 
 * @return 
 */
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;
}
?>

需要注意的地方和小常识:

1、导入和导出过程中,要使用统一编码,遇到中文字符一定要记得转码,否则可能会出现中文乱码的情况。

2、fgetcsv函数可以轻松处理csv,使用该函数可以从文件指针中读入一行并解析CSV字段。

3、$action = $_GET['action']; ==> 这个参数决定是执行导入还是导出方法。

4、csv文件是由逗号分割符组成的纯文本文件!

5、在导入方法中的循环获取各字段值的时候,可以加可以减的,导出时也是一样。

导出时也是一样:(比案例多导出一个字段修改方法):

$str = "id,姓名,性别,年龄,地址\n";

 那么在它下面的for里面就要改成:

$str .= $row['id'].",".$name.",".$sex.",".$row['age'].",".$row['address']."\n";


 浏览器启用弹出窗口过滤功能,将无法跳转到下载页。在浏览器地址栏右边符号提示处点击允许就可以了!
查看演示   下载源码  
【温馨提示】源码包解压密码:www.youhutong.com

转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/81.html


  1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
  2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
  3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
  4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意
( 0 )个小伙伴在吐槽
    登录帐号  如果已经登录请刷新! 发表我的评论
    表情