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 MemCached 高级缓存应用代码
Aug 05 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
php中url函数介绍及使用示例
Feb 13 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
基于laravel where的高级使用方法
Oct 10 PHP
laravel 执行迁移回滚示例
Oct 23 PHP
PHP连接MySQL数据库三种实现方法
Dec 10 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代码
2007/03/03 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
js post方式传递提交的实现代码
2010/05/31 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
Cpy和Python的效率对比
2015/03/20 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python圣诞树编写实例详解
2020/02/13 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
python语言的优势是什么
2020/06/17 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
新郎婚宴答谢词
2014/01/19 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2014年司法局工作总结
2014/12/11 职场文书
白银帝国观后感
2015/06/17 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书