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原理的opcodes(操作码)
Oct 26 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
php实现读取和写入tab分割的文件
Jun 01 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
php实现文件预览功能
May 23 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 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如何抛出异常处理错误
2011/03/02 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php解决约瑟夫环示例
2014/04/09 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
Google 静态地图API实现代码
2010/11/19 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
js图片处理示例代码
2014/05/12 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
python对日志进行处理的实例代码
2018/10/06 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
用python脚本24小时刷浏览器的访问量方法
2018/12/07 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
python简单实现插入排序实例代码
2020/12/16 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
智能室内花园:Click & Grow
2021/01/29 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
如何在C# winform中异步调用web services
2015/09/21 面试题
初中校园广播稿
2014/02/02 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python