PHP操作csv文件代码详解

作者:袖梨 2022-06-24

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

 代码如下 复制代码

$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中有中文我们需要注意一下中文问题,否则中文乱码就会和你在一起玩哦,下面给了一个实例解决中文乱码。

 代码如下 复制代码

/** by www.111com.net */
$row = 1;
$handle = fopen("file.csv","r");
//fgetcsv() 解析读入的行并找出 CSV格式的字段然后返回一个包含这些字段的数组。
while ($data = fgetcsv($handle, 1000, ",")) {
    $num = count($data);
    echo "

$num fields in line $row:
n";
    $row++;
    for ($c=0; $c < $num; $c++) {
  //注意中文乱码问题
  $data[$c]=iconv("gbk", "utf-8//IGNORE",$data[$c]); 
        echo $data[$c] . "
n";
    }
}
fclose($handle);
?>

读取csv文件的某一行数据

 代码如下 复制代码

 

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文件制定行数(行区间)

 

 代码如下 复制代码
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."
";
}
?>

相关文章

精彩推荐