0

0

【代码实现】使用PHP导入和导出CSV文件

php中文网

php中文网

发布时间:2016-06-23 13:48:05

|

993人浏览过

|

来源于php中文网

原创

地址:http://www.phpthinking.com/archives/558


项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用PHP并结合mysql,实现了CSV格式数据的导入和导出功能。

下载源码

我们先准备mysql数据表,假设项目中有一张记录学生信息的表student,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。

立即学习PHP免费学习笔记(深入)”;

 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; 

我们还需要一个html交互页面,放置导入表单和导出按钮。

 <form id="addform" action="do.php?action=import" method="post" enctype="multipart/form-data">     <p>请选择要导入的CSV文件:<br/><input type="file" name="file"> <input type="submit"     class="btn" value="导入CSV">     <input type="button" class="btn" value="导出CSV" onclick="window.location.href='do.php?      action=export'"></p> </form> 

选择好本地csv文件后,点击导入,提交到do.php?action=import处理,而点击导出按钮则请求地址do.php?action=export进行数据导出处理。

1.导入CSV

do.php需要根据get过来的参数,分别处理导入和导出过程,php结构如下:

我的小书坊源码(三层实现)
我的小书坊源码(三层实现)

可以实现用户的在线注册、登陆后可以添加图书、购买图书,可以对图书类别、出版社、价格等进行饼图分析默认帐号/密码:51aspx/51aspx该系统采用三层接口开发,App_Code下为三层结构的代码文件,适合三层入门者学习使用数据绑定控件使用的是GridView,顶部公用文件采用了UserControl用户控件调用DB_51aspx下为Sql数据库文件,附件即可【该源码由51aspx提供】

下载
 include_once ("connect.php"); //连接数据库  $action = $_GET['action']; if ($action == 'import') { //导入CSV    //导入处理 } elseif ($action=='export') { //导出CSV    //导出处理 } 

导入CSV处理流程:校验csv文件合法性(本文忽略)->打开读入并解析csv文件中的字段->循环获取各字段值->批量添加到数据表中->完成。

 if ($action == 'import') { //导入CSV     $filename = $_FILES['file']['tmp_name'];     if (empty ($filename)) {         echo '请选择要导入的CSV文件!';         exit;     }     $handle = fopen($filename, 'r');     $result = input_csv($handle); //解析csv     $len_result = count($result);     if($len_result==0){         echo '没有任何数据!';         exit;     }     for ($i = 1; $i < $len_result; $i++) { //循环获取各字段值         $name = iconv('gb2312', 'utf-8', $result[$i][0]); //中文转码         $sex = iconv('gb2312', 'utf-8', $result[$i][1]);         $age = $result[$i][2];         $data_values .= "('$name','$sex','$age'),";     }     $data_values = substr($data_values,0,-1); //去掉最后一个逗号     fclose($handle); //关闭指针     $query = mysql_query("insert into student (name,sex,age) values $data_values");//批量插入数据表中     if($query){         echo '导入成功!';     }else{         echo '导入失败!';     } } 

注意php自带的fgetcsv函数可以轻松处理csv,使用该函数可以从文件指针中读入一行并解析CSV字段。下面的函数将csv文件字段解析并以数组的形式返回。

 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; } 

此外在导入到数据库中时,我们采用的是批量插入而不是一条条插入的,因此在构建SQL语句时,要稍作处理,见代码。

2.导出CSV

我们知道csv文件是由逗号分割符组成的纯文本文件,你可以用excel打开,效果跟xls表个一样。

导出CSV处理流程:读取学生信息表->循环记录构建逗号分隔的字段信息->设置header信息->导出文件(下载)到本地

 ... } elseif ($action=='export') { //导出CSV     $result = mysql_query("select * from student order by id asc");     $str = "姓名,性别,年龄\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 .= $name.",".$sex.",".$row['age']."\n"; //用引文逗号分开     }     $filename = date('Ymd').'.csv'; //设置文件名     export_csv($filename,$str); //导出 } 

要将数据导出到本地即下在,需要修改header信息,代码如下:

 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; } 

注意导入和导出的过程中,因为我们使用的是统一UTF-8编码,遇到中文字符一定要记得转码,否则可能会出现中文乱码的情况。

好了,本文讲解到此,后面我还会有文章介绍PHP结合mysql导入导出excel,以及xml的导入导出,敬请关注。


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
nginx浅谈
nginx浅谈

共15课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号