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";
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/81.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意