PHP导入导出csv文件

2017年11月9日09:25:56

根据项目实践总结的一个类文件, mac/win下没乱码

简体中文 默认从gb2312转到utf-8

https://gitee.com/myDcool/PHP-CSV

用法:

1 // 导入:
2 $arr = CSV::import($filepath);
3
4 // 导出:
5 $data = [‘filename‘ => ‘xxx‘, ‘list‘ => [[xx,xx,x], [xx,xx,x]]];
6 CSV::export($data);

 1 <?php
 2
 3 class CSV
 4 {
 5     public static $csvError = ‘‘;
 6
 7     public static function _SetError($error)
 8     {
 9         self::$csvError = $error;
10     }
11
12     /**
13      * 读取csv文件成数组
14      * @param string $filePath 文件路径
15      * @return array|bool
16      */
17     public static function import($filePath)
18     {
19         setlocale(LC_ALL, ‘zh_CN‘);
20
21         if(!file_exists($filePath) || !is_readable($filePath)) {
22             self::_SetError(‘文件不存在或者不可读‘);
23             return FALSE;
24         }
25
26         $rows = array();
27         $fp = fopen($filePath, ‘rb‘);
28         while (!feof($fp)) {
29
30             $row = str_replace(array("\r\n", "\r", "\n"), ‘‘, fgets($fp));
31             $rows[] = explode(‘,‘, iconv(‘GB2312‘, ‘UTF-8‘, $row)); //简体中文编码转为 utf-8, gbk 兼容gb2312
32
33         }
34         return $rows;
35     }
36
37     /**
38      * 输出 UTF-8 编码的csv文件
39      * @param array $data  [‘filename‘ => ‘xxx‘, ‘list‘ => [[xx,xx,x], [xx,xx,x], ....]]
40      * @return bool
41      */
42     public static function export($data)
43     {
44         if (empty($data[‘filename‘]) || empty($data[‘list‘])) {
45             self::_SetError(‘缺少参数filename/list‘);
46             return FALSE;
47         }
48         $filename = $data[‘filename‘]; //文件名
49
50         header("Expires: 0");
51         header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
52         // 强制下载
53         header("Content-Type: application/force-download");
54         header("Content-Type: application/octet-stream");
55         header("Content-Type: application/download");
56         // disposition / encoding on response body
57         header("Content-Disposition: attachment;filename={$filename}");
58         header("Content-Transfer-Encoding: binary");
59
60         //设置utf-8 + bom ,处理汉字显示的乱码
61         echo(chr(0xEF).chr(0xBB).chr(0xBF));
62
63         //打开输出缓存
64         ob_start();
65
66         //打开输出流
67         $df = fopen("php://output", ‘w‘);
68
69         //数据写入缓存
70         foreach ($data[‘list‘] as $row) {
71             foreach ($row as $k => $v) {
72                 is_numeric($v) && ($row[$k] .= "\t"); //防止变为科学计数法显示
73             }
74             fputcsv($df, $row);
75         }
76
77         fclose($df);
78         echo ob_get_clean();
79         exit;
80     }
81 }

时间: 2024-11-05 11:28:08

PHP导入导出csv文件的相关文章

php 导入/导出 csv 文件

php 导入/导出 csv 文件 1.简介 项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用原生PHP,实现了CSV格式数据的导入和导出功能.并解决相关乱码问题. 将xls转换成csv的文本格式,然后再用php分析这个文件,和PHP分析文本没有什么区别.优点:跨平台,效率比较高.可以读写.缺点:只能直接使用csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化.一个文件只有一个SHEET. 2.相关函数介绍 2.1

mysql SQLyog导入导出csv文件

1.选择数据库表 --> 右击属性 --> 备份/导出 --> 导出表数据作为 --> 选择cvs --> 选择下面的“更改” --> 字段 --> 变量长度 --> 字段被终止 -->输入逗号,(这是重点,否则导出的csv文件内容都在一列中,而不是分字段分列)下面两个选项框取消. 2.导出csv文件后,使用UE编辑器打开,另存为,选择编码为utf-8格式,保存. 3.打开csv文件,这样中文为正确的显示,如果不转码保存的话,为中文乱码. 4.选择数据

[转]PL/SQL Developer 导入导出csv文件

PL/SQL Developer 可以导入或者导出CSV文件. 导入CSV文件步骤: 1.选择tools->text importer.... 2.选择第二个Data to oracle选项卡,然后选择Open Data file....,选择要导入的csv文件,确定 3.选择对应的owner和table,将字段一一对应,最后点击下方的导入,数据即导入到了选定的table中了. 导出csv文件相对比较简单: 1.先用sql语句查询得到结果 2.选择export query results ...

导入导出csv文件

在工作中需要把csv文件数据导入数据库或者把数据库数据导出为csv文件.以下是我的简单的实现. 1 <?php 2 class csv 3 { 4 public $db_connection; 5 public $table_name; 6 public $file_path; 7 8 public function __construct($db_connection,$table_name,$file_path) 9 { 10 $this->db_connection=$db_connec

mysql导入导出csv文件

问题:为什么要导入导出为csv文件呢? (1)所谓大数据处理,仅仅关心某些列的数据,而非整个表结构,这些数据就需要保存为csv通用的存储格式,不仅可以在widows下作为文本文件进行处理:也可以在hadoop分布式系统上上进行处理: (2)mysql 数据库 迁移为 Oracle .SQLServer数据库,或者反过来,由于各自的设计不同,不能直接的导入导出为dmb sql等格式的文件,可能需要数据的导出导入为csv,而数据表结构的设计可能得通过其它途径. 一:MYSQL如何导出文本文件  (备

C#中使用NPOI导入导出CSV文件

1.首先(NPOI官网下载dll) 添加引用:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,NPOI.OpenXmlFormats.dll 2.代码--CSVHelper 1 public class CSVHelper 2 { 3 /// <summary> 4 /// 写入CSV 5 /// </summary> 6 /// <param name="fileName">文件名</param>

使用PHP导入和导出CSV文件

1.配置文件:connect.php <?php $host="localhost"; $db_user="root"; $db_pass="root"; $db_name="wh"; $timezone="Asia/Shanghai"; $link=mysql_connect($host,$db_user,$db_pass); mysql_select_db($db_name,$link); mys

【代码实现】使用PHP导入和导出CSV文件

文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/558 项目开发中,很多时候要将外部CSV文件导入到数据库中或者将数据导出为CSV文件,那么具体该如何实现呢?本文将使用PHP并结合mysql,实现了CSV格式数据的导入和导出功能. 下载源码 我们先准备mysql数据表,假设项目中有一张记录学生信息的表student,并有id,name,sex,age分别记录学生的姓名.性别.年龄等信息.   CREATE TABLE `student`

Phoenix 导出csv文件

1. 是否存在高效的csv导出工具? phoenix提供了BulkLoad工具,使得用户可以将大数据量的csv格式数据高效地通过phoenix导入hbase,那么phoenix是否也存在高效导出csv数据的工具类呢? 这里可能有人会想是否能够按照导出常规hbase的方法来导出数据.比如自己写Java代码,或者用hbase原生支持的工具类,或者说采用pig提供的hbase工具类.是否能这么干取决于你phoenix建表时候字段的数据类型.如果字段采用的不是varchar.char等字符类型以及uns