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、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意

