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中转义mysql语句的实现代码
Jun 24 PHP
php文档更新介绍
Jul 22 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 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和html混合代码的小技巧(分享)
2016/11/03 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
jQuery前台数据获取实现代码
2011/03/16 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
基于python的Paxos算法实现
2019/07/03 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
python中的列表和元组区别分析
2020/12/30 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
python绘制汉诺塔
2021/03/01 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
介绍一下Ruby的多线程处理
2013/02/01 面试题
优秀幼教自荐信
2014/02/03 职场文书
自我鉴定总结
2014/03/24 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
导师对论文的学术评语
2015/01/04 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
redis protocol通信协议及使用详解
2022/07/15 Redis