Skip to content

components csv

tolizhan edited this page Oct 30, 2021 · 6 revisions

CSV 操作

生成 CSV 是of_base_com_csv类的静态操作

download($filename = 'download', $charset = 'UTF-16LE') 以指定的文件名下载csv
filenamestring, bool, array
 含"/"字符串=存储到磁盘路径,
 其它字符串=下载文件名,
 false=关闭存储IO
 array=CSV数据, 可以是一维(单行)或二维(多行)数组
            
charsetstring, null
转化的字符集, 可设置 "UTF-16LE", "UTF-8" 等编码
<?php
/**
 * 浏览器访问直接下载
 */
of_base_com_csv::download('文件名', 'UTF-16LE');    //指定下载文件名, 设置为UTF-16LE编码
of_base_com_csv::download(array('11', '4', 2));     //第一行数据 字符串的数字可以防止过长数字变成科学记数
of_base_com_csv::download(array('12', '3', 3));     //第二行数据 非字符串的数字可以使用office的统计功能
of_base_com_csv::download(array(                    //二维数据演示
    array('21', '2', 4),
    array('22', '1', 5)
));

/**   生成CSV文件到磁盘  / of_base_com_csv::download(ROOT_DIR . '/test.csv');  //提供一个磁盘路径 of_base_com_csv::download(array('11', '3', 3));     //单行数据演示 of_base_com_csv::download(array(                    //二维数据演示     array('21', '2', 4),     array('22', '1', 5) )); of_base_com_csv::download(false);                   //关闭存储的文件IO 结束时记得调用此方法

&toString($path = null, $charset = 'UTF-16LE') 整理csv数组成字符串
pathstring
null=仅返回csv字符串, 字符串=覆盖写入磁盘路径, 数据流=追加写入到数据流
charsetstring, null
转化的字符集, 默认 "UTF-16LE"
<?php
//打开文件流
$fp = of_base_com_disk::file(ROOT_DIR . '/demo.csv', null, true);

//模拟循环从数据库中查询 for ($i = 0; $i <= 2; $i += 2) {     //模拟从数据库中查出的二维数组     of_base_com_csv::$fileArr = array(         array($i + 1, 2, 3),         array($i + 2, 2, 3)     );     //追加写入到数据流     of_base_com_csv::toString($fp); }

//关闭文件流 fclose($fp);

addRow($val, $row = null, $col = false) 操作csv内部数组 $fileArr
valarray, bool
数组=插入数据, false=删除数据
rowint, null, bool
指定行位置, 默认null, 数字=正负位置, null=结尾位置, false=插入操作, true=替换操作
colint, null, bool
指定列位置, 默认false, 数字=正负位置, null=结尾位置, false=插入操作, true=替换操作
<?php
of_base_com_csv::addRow(array(1, 2));                           //尾行插入
of_base_com_csv::addRow(array(3, 4, "sd\nsa"), false, null);    //尾列插入
/**
  以上代码等同于
  of_base_com_csv::$fileArr = array(
      array(1,  2,  3),
      array("", "", 4),
      array("", "", "sd\nsa")
  );
 */
of_base_com_csv::download('文件名');

解析 CSV 是of_base_com_csv类的静态操作

&parse(&$path, $func = null)解析csv
pathstring
指定CSV路径
funcstring, null, false
str=自定文件编码, 如: "UTF-8", "UTF-16LE"
null=自动识别 UTF-8 UTF-16LE 和 配置_of.charset 字符集
false=主动结束循环解析, 释放IO占用的资源
<?php
$path = ROOT_DIR . '/test.csv';
while ($data = &of_base_com_csv::parse($path)) {
    print_r($data);                                     //打印一行数据
    break ;                                             //模拟非正常结束
}

of_base_com_csv::parse($path, false);                   //主动结束(非正常结束时调用) unlink($path);                                          //结束后可以调用删除 ?>

Clone this wiki locally