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中用加号与用array_merge合并数组的区别深入分析
Jun 03 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
PHP+jquery实时显示网站在线人数的方法
Jan 04 PHP
php递归创建目录的方法
Feb 02 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
php生成动态验证码gif图片
Oct 19 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 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
无线电的诞生过程
2021/03/01 无线电
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
Js+XML 操作
2006/09/20 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
深入理解Python分布式爬虫原理
2017/11/23 Python
python 批量修改/替换数据的实例
2018/07/25 Python
Python切片操作深入详解
2018/07/27 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Python configparser模块常用方法解析
2020/05/22 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
主管会计岗位职责
2014/03/13 职场文书
新文化运动的基本口号
2014/06/21 职场文书
设备收款委托书范本
2014/10/02 职场文书