Welcome 微信登录

首页 / 网页编程 / PHP / php操作csv文件代码实例汇总

1.读取csv数据, 输出到sales.csv文件中:
$sales = array(array("Northeast", "2004-01-01", "2004-02-01", 12.54),array("Northwest", "2004-01-01", "2004-02-01", 546.33),array("Southeast", "2004-01-01", "2004-02-01", 93.26),array("Southwest", "2004-01-01", "2004-02-01", 945.21),array("All Regions", "---", "--", 1597.34),);$fh = fopen("sales.csv", "w") or die("Can"t open sales.csv");foreach($sales as $sales_line){if(fputcsv($fh, $sales_line) === false){die("Can"t write CSV line");}}fclose($fh) or die("Can"t close sales.csv");
2. 读取csv数据, 使用特殊的流输出
$sales = array(array("Northeast", "2004-01-01", "2004-02-01", 12.54),array("Northwest", "2004-01-01", "2004-02-01", 546.33),array("Southeast", "2004-01-01", "2004-02-01", 93.26),array("Southwest", "2004-01-01", "2004-02-01", 945.21),array("All Regions", "---", "--", 1597.34),);$fh = fopen("php://output", "w");foreach($sales as $sales_line){if(fputcsv($fh, $sales_line) === false){die("Can"t write CSV line");}}fclose($fh);
3. 读取csv数据, 输出到缓冲中
$sales = array(array("Northeast", "2004-01-01", "2004-02-01", 12.54),array("Northwest", "2004-01-01", "2004-02-01", 546.33),array("Southeast", "2004-01-01", "2004-02-01", 93.26),array("Southwest", "2004-01-01", "2004-02-01", 945.21),array("All Regions", "---", "--", 1597.34),);ob_start();$fh = fopen("php://output", "w") or die("Can"t open php://output");foreach($sales as $sales_line){if(fputcsv($fh, $sales_line) === false){die("Can"t write CSV line");}}fclose($fh) or die("Can"t close php://output");$output = ob_get_contents();ob_end_clean();
4. 读取csv文件的数据
$fp = fopen("sample3.csv", "r") or die("can"t open file");print "<table>
";while($csv_line = fgetcsv($fp)){print "<tr>";for($i=0, $j=count($csv_line); $i<$j; $i++){// print "<td>".htmlentities($csv_line[$i])."</td>";print "<td>".htmlentities(iconv("gb2312","utf-8",$csv_line[$i]))."</td>";}print "</tr>
";}print "</table>
";fclose($fp) or die("can"t close file");
5. 下载CSV文件
$sales = array(array("Northeast", "2004-01-01", "2004-02-01", 12.54),array("Northwest", "2004-01-01", "2004-02-01", 546.33),array("Southeast", "2004-01-01", "2004-02-01", 93.26),array("Southwest", "2004-01-01", "2004-02-01", 945.21),array("中国", "2004-01-01", "2004-02-01", 945.21),);$fh = fopen("php://output", "w") or die("can"t open php://output");$total = 0;// 告诉浏览器发送的是一个csv文件header("Content-Type: application/csv");header("Content-Disposition: attachment; filename="sales.csv"");// 输出表头fputcsv($output, array("Region", "Start Date", "End Date", "Amount"));// 输出每一行数据, 并递增$totalforeach($sales as $sales_line){if(fputcsv($fh, $sales_line) === false){die("Can"t write CSV line");}else{$total += $sales_line[3];}}fputcsv($fh, array("All Regions", "--", "--", $total));fclose($fh) or die("Can"t close php://output");
6.读取CSV文件指定行和区间行
/*****读取CSV文件中的指定行*****/function get_file_line_a($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);//输入第10行内容/*****读取CSV文件中的区间行*****/function get_file_line_b( $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;}//用 get_file_line读取并输出第11行到第20行$aa = get_file_line("windows_2011_s.csv", 11, 20); //从第11行到第20行foreach ($aa as $bb){echo $bb."<br>";}