使用PHP生成并导出CSV文件

CSV文件是以纯文本形式存储的,一般以逗号为分隔符。
这里主要简单介绍下如何导出CSV文件。

一、浏览器导出CSV文件格式

/**
 * 导出CSV文件
 */
function exportCsv()
{
    // 需要导出的内容
    $data = [
        [‘name‘ => ‘张三‘, ‘score‘ => ‘80‘],
        [‘name‘ => ‘李四‘, ‘score‘ => ‘90‘],
        [‘name‘ => ‘王五‘, ‘score‘ => ‘60‘],
    ];
    // 文件名,这里都要将utf-8编码转为gbk,要不可能出现乱码现象
    $filename = $this->utfToGbk(‘导出csv文件.csv‘);

    // 拼接文件信息,这里注意两点
    // 1、字段与字段之间用逗号分隔开
    // 2、行与行之间需要换行符
    $fileData = $this->utfToGbk(‘姓名, 分数‘) . "\n";
    foreach ($data as $value) {
        $temp = $value[‘name‘] . ‘,‘ .
                $value[‘score‘];
        $fileData .= $this->utfToGbk($temp) . "\n";
    }

    // 头信息设置
    header("Content-type:text/csv");
    header("Content-Disposition:attachment;filename=" . $filename);
    header(‘Cache-Control:must-revalidate,post-check=0,pre-check=0‘);
    header(‘Expires:0‘);
    header(‘Pragma:public‘);
    echo $fileData;
    exit;
}

/**
 * 字符转换(utf-8 => GBK)
 */
function utfToGbk($data)
{
    return iconv(‘utf-8‘, ‘GBK‘, $data);
}

二、在服务器生成CSV文件

/**
 * 下载CSV文件
 */
public function downLoadCsv()
{
    // 需要导出的内容
    $data = [
        [‘name‘ => ‘张三‘, ‘score‘ => ‘80‘],
        [‘name‘ => ‘李四‘, ‘score‘ => ‘90‘],
        [‘name‘ => ‘王五‘, ‘score‘ => ‘60‘],
    ];
    // 文件名,这里都要将utf-8编码转为gbk,要不可能出现乱码现象
    $filename = $this->utfToGbk(‘生成csv文件.csv‘);

    // 拼接文件信息,这里注意两点
    // 1、字段与字段之间用逗号分隔开
    // 2、行与行之间需要换行符
    $fileData = $this->utfToGbk(‘姓名, 分数‘) . "\n";
    foreach ($data as $value) {
        $temp = $value[‘name‘] . ‘,‘ .
            $value[‘score‘];
        $fileData .= $this->utfToGbk($temp) . "\n";
    }

    $filePath = __DIR__ . ‘/‘ . $filename;
    // 将一个字符串写入文件
    file_put_contents($filePath, $fileData);
    return $filePath;
}

/**
 * 字符转换(utf-8 => GBK)
 */
public function utfToGbk($data)
{
    return iconv(‘utf-8‘, ‘GBK‘, $data);
}

原文地址:https://www.cnblogs.com/woods1815/p/11875913.html

时间: 2024-10-15 11:09:56

使用PHP生成并导出CSV文件的相关文章

php 导入/导出 csv 文件

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

thinkphp导出csv文件

导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this->display(),最后细心看到think_page_trace这样的字样,恍然大悟,是页面的跟踪日志,这个默认是会输出来的.最后在方法后面加了一个exit结束就好了,下面是代码: 1.IndexController.class.php <?php namespace Home\Controller; use Think\Con

项目--简单导出CSV文件

//导出 protected void BtnOutPut_Click(object sender, EventArgs e) { //角色 InitialRoles(); DataTable dt = DBClass.GetDataTable(string.Format(@"SELECT * FROM {0} Order By SN desc", View(Where))); StringWriter sw = new StringWriter(); //4S店不能看到总部价格等相关

mysqldump 导出CSV文件

mysqldump -h 127.0.0.1 -u root -p database table -t -T /home/mysql/ --fields-enclosed-by=\" --fields-terminated-by=, -w 增加条件判断语句 老外的一个处理mysql异常的错误,明天整理一下 http://icesquare.com/wordpress/mysql-starting-mysql-error-the-server-quit-without-updating-pid-f

java utf8字符 导出csv 文件的乱码问题。

在输出的格式为UTF-8的格式,但是打开CSV文件一直为乱码,后来参考了这里的代码,搞定了乱码问题,原文请参考:http://hbase.iteye.com/blog/1172200 private static void writeBcp( ) throws IOException { //Create bcp file if not exist File bcpFile = new File("test.csv"); //bcpFile.delete(); byte[] bom =

mysql SQLyog导入导出csv文件

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

web前端导出csv文件

前言 导出文件,使用最多的方式还是服务器端来处理.比如jsp 中使用response 的方式. 但是,有时候可能就想使用web 前端是否也可以把页面上的内容导出来呢? 比如说,导出页面的一个表格. 这个需求肯定是有答案的,只是对于各浏览器处理会稍微不一样.(主要是IE 和其他浏览器的区别). 在IE中使用ActiveXObject 实现,在firefox 和Chrome 中使用  a 标签(或者js)就可以实现了. 这里主要讲一下其他浏览器中的实现. 使用 a 标签实现方式 直接上例子: [ht

导出csv文件数字会自动变科学计数法的解决方法

其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0.解决这个问题:只要把数字字段后面加上显示上看不见的字符即可,字符串前面或者结尾加上制表符"\t".php 程序可以这样判断,注意一定是"\t",不是'\t'.

PHP 读取和导出 CSV文件

PHP 读取和导出 CSV文件,速度比phpexcel快80%,而phpexcel 占内存,在数据大的情况下,5万条只需几秒不到,几乎感觉不出来 如果遇到数字是科学计算法,可以在前面加一个 ' 单引号 /** * 读取CSV文件 * @param string $csv_file csv文件路径 * @param int $lines 读取行数 * @param int $offset 起始行数 * @return array|bool */ public function read_csv_l