首页 > php开发 > PHP操作csv文件代码详解

PHP操作csv文件代码详解

在php中读取操作csv文件的方法有很多,最简单的可以直接使用fopen像打开txt文件打开,然后利用explode分开就成了,生成也一样直接使用a,b,c,e保存成csv格式就KO,但php还提供了fputcsv函数对csv文件操作,下面我来介绍介绍.

1.生成CVS,fputcsv()将行格式化为 CSV 并写入文件指针,代码如下:

<?php
$list = array(
    'aaa,bbb,ccc,dddd',
    '11,22,33',
    '"php","java"'
);
$fp = fopen('file.csv', 'w');
foreach ($list as $line) {
    fputcsv($fp, explode(',', $line));
}
fclose($fp);
?>

小提示,如果你csv中有中文我们需要注意一下中文问题,否则中文乱码就会和你在一起玩哦,下面给了一个实例解决中文乱码,代码如下:

<?php
/** by www.phprm.com */
$row = 1;
$handle = fopen("file.csv", "r");
//fgetcsv() 解析读入的行并找出 CSV格式的字段然后返回一个包含这些字段的数组。
while ($data = fgetcsv($handle, 1000, ",")) {
    $num = count($data);
    echo "<p> $num fields in line $row: <br>n";
    $row++;
    for ($c = 0; $c < $num; $c++) {
        //注意中文乱码问题
        $data[$c] = iconv("gbk", "utf-8//IGNORE", $data[$c]);
        echo $data[$c] . "<br>n";
    }
}
fclose($handle);
?>

读取csv文件的某一行数据,代码如下:

<?php
function get_file_line($file_name, $line) {
    $n = 0;
    $handle = fopen($file_name, 'r');
    if ($handle) {
        while (!feof($handle)) {
            ++$n;
            $out = fgets($handle, 4096);
            if ($line == $n) break;
        }
        fclose($handle);
    }
    if ($line == $n) return $out;
    return false;
}
echo get_file_line("windows_2011_s.csv", 10);
?>

读取csv文件制定行数,行区间,代码如下:

<?php
function get_file_line($file_name, $line_star, $line_end) {
    $n = 0;
    $handle = fopen($file_name, "r");
    if ($handle) {
        while (!feof($handle)) {
            ++$n;
            $out = fgets($handle, 4096);
            if ($line_star <= $n) {
                $ling[] = $out;
            }
            if ($line_end == $n) break;
        }
        fclose($handle);
    }
    if ($line_end == $n) return $ling;
    return false;
}
$aa = get_file_line("windows_2011_s.csv", 11, 20); //从第11行到第20行
foreach ($aa as $bb) {
    echo $bb . "<br>";
}
?>


文章地址:http://www.phprm.com/develop/fs5270.html

转载随意^^请带上本文地址!

标签:php操作csv csv文件代码

发表留言