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模板页面中分页代码的解析
Feb 06 PHP
PHP的变量总结 新手推荐
Apr 18 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
php多重接口的实现方法
Jun 20 PHP
php实现上传图片文件代码
Jul 19 PHP
PHP实现图片上传并压缩
Dec 22 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
php好代码风格的阶段性总结
Jun 25 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
PHP经典实用正则表达式小结
May 04 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
晶体管来复再生式二管收音机
2021/03/02 无线电
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
python学生管理系统的实现
2020/04/05 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
python/golang 删除链表中的元素
2020/09/14 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
高中体育教学反思
2014/01/29 职场文书
三年级科学教学反思
2014/01/29 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
加强作风建设工作总结
2014/10/23 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
创业计划之特色精品店
2019/08/12 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
python cv2图像质量压缩的算法示例
2021/06/04 Python