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 相关文章推荐
PHP制作图型计数器的例子
Oct 09 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
JavaScript创建命名空间的5种写法
Jun 24 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
Nov 05 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 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 采集心得技巧
2009/05/15 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
javascript面向对象之对象的深入理解
2015/01/13 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
决策树的python实现方法
2014/11/18 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
学生生病请假条范文
2014/02/16 职场文书
机关办公室岗位职责
2014/04/16 职场文书
社区活动总结报告
2014/05/05 职场文书
第二课堂活动总结
2014/05/07 职场文书
优秀志愿者感言
2015/08/01 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书