PHP处理CSV表格文件的常用操作方法总结


Posted in PHP onJuly 01, 2016

要做在线Excel表格编辑功能,Excel的xls文件格式的解析就是个问题,毕竟这是微软Office的私有专利格式.
所以要做的话还是用通用的csv(Comma Separated Value,逗号分隔值)格式吧.
各种办公软件都能识别csv表格,其实就是以特定分隔符(比如逗号)分隔单元格的表格.
拿PHP来说,fgetcsv读入csv表格,返回一个数组,
然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.
工作量主要还在于浏览器前端,建议你用jQuery进行DOM和AJAX操作,
要实现phpMyAdmin那样细粒度双击单元格编辑,然后AJAX提交也不难,
或者整个表格写好后一次性$("form").serialize();然后AJAX提交也可以.

CSV表格的几条规则:
1.每一行的单元格内容之间用逗号分隔.
2.如果单元格的内容本身有逗号,这个单元格的内容将会用引号包含.
3.如果单元格的内容本身有引号:
(1)引号不在首或尾,这个单元格内容不会被引号包含.
(2)引号在首或尾,这个单元格内容会被引号包含,并且原来首尾的引号会被转义.

读写CSV

<?php
header('Content-Type: text/plain; charset=utf-8');

//导出CSV表格:数组转CSV
$arr = array (
  array('ab', 'cd'),
  array('"a,b"', '"c,d"'),
);
$fp = fopen('file.csv', 'w');
foreach ($arr as $row) {
  //将一行格式化为CSV并写入文件指针
  fputcsv($fp, $row);
}
fclose($fp);
unset($arr);

//导入CSV表格:CSV转数组
$fp = fopen('file.csv', 'r');
while ( ($row = fgetcsv($fp)) !== FALSE ) {
  //从文件指针中读入一行并解析CSV
  $arr[] = $row;
}
fclose($fp);
var_export($arr);

另存为一个独立文件
download.php:

<?php
$list = array (
  'aaa,bbb,ccc,dddd',
  '123,456,789',
  '"aaa","bbb"'
);
session_start();
$_SESSION['outputArray']=$list;
?>
<a href="test.php" target="_blank">下载csv文件</a>



test.php:


<?php
session_start();
$outputArray=$_SESSION['outputArray'];
header('Content-Type: application/csv');
header('Content-Disposition: attachment;filename="sales.csv"');
$output=fopen('php://output','w') or die("can not open");
foreach ($outputArray as $line) {
  fputcsv($output, split(',', $line));
}
fclose($output) or die("can not close");
?>



自动保存csv文件到指定地点
<?php

$list = array (
  'aaa,bbb,ccc,dddd',
  '123,456,789',
  '"aaa","bbb"'
);

$fp = fopen('file.csv', 'w');

foreach ($list as $line) {
  fputcsv($fp, split(',', $line));
}

fclose($fp);
?>
PHP 相关文章推荐
桌面中心(一)创建数据库
Oct 09 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
php实现mysql同步的实现方法
Oct 21 PHP
php操作mysqli(示例代码)
Oct 28 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
Jun 05 PHP
php自定文件保存session的方法
Dec 10 PHP
php上传中文文件名乱码问题处理方案
Feb 03 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 PHP
PHP读书笔记整理_结构语句详解
Jul 01 #PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 #PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 #PHP
PHP读书笔记_运算符详解
Jul 01 #PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 #PHP
php无法连接mysql数据库的正确解决方法
Jul 01 #PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 #PHP
You might like
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python组合无重复三位数的实例
2018/11/13 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
区域销售经理岗位职责
2013/12/10 职场文书
项目管理计划书
2014/01/09 职场文书
学生爱国演讲稿
2014/01/14 职场文书
供用电专业求职信
2014/07/07 职场文书
作文评语集锦
2014/12/25 职场文书
个园导游词
2015/02/04 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python