在php中讀取操作csv文件的方法有很多,最簡單的可以直接使用fopen像打開txt文件打開,然后利用explode分開就成了,生成也一樣直接使用a,b,c,e保存成csv格式就KO,但php還提供了fputcsv函數(shù)對(duì)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中有中文我們需要注意一下中文問題,否則中文亂碼就會(huì)和你在一起玩哦,下面給了一個(gè)實(shí)例解決中文亂碼,代碼如下:
- <?php
- /** by www.survivalescaperooms.com */
- $row = 1;
- $handle = fopen("file.csv","r");
- //fgetcsv() 解析讀入的行并找出 CSV格式的字段然后返回一個(gè)包含這些字段的數(shù)組。
- while ($data = fgetcsv($handle, 1000, ",")) {
- //開源代碼Vevb.com
- $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文件的某一行數(shù)據(jù),代碼如下:
- <?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文件制定行數(shù),行區(qū)間,代碼如下:
- <?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>";
- }
- ?>
新聞熱點(diǎn)
疑難解答