2012-02-24 125 views
2

需要用php處理大型的csv文件。 使用fgetcsv和性能似乎相當不錯。爲了更好/更快的處理,我希望csv文件在第一行有列名,現在缺少這些列名。用PHP添加一行到csv文件的頂部(第一行)

現在我想在用fgetcsv處理文件之前,先用PHP將帶有列名的頂行添加到帶有PHP的csv文件中。

有沒有辦法用php輕鬆地在php文件頂部添加一行?或者這是否意味着我必須採取下面的方法?

  1. 列表項
  2. 列表項
  3. 創建一個臨時文件
  4. 添加列名於該臨時文件
  5. 讀取原來的CSV文件內容
  6. 把原來的CSV內容到臨時文件
  7. 刪除原文件
  8. 重命名臨時文件

任何有關如何以最有效的方式做到這一點的反饋是高度讚賞。感謝您的時間:)

+0

試試這個庫可能是有用的http://phpexcel.codeplex.com/wikipage?title=例子 – 2012-02-24 09:33:20

+1

可能重複的[我如何預先開始文件開始?](http:// stackoverflow .com/questions/3332262/how-do-i-prepend-file-to-begining) – Treffynnon 2012-02-24 09:55:34

+0

你是對的..在搜索網站時沒有發現..謝謝 – quokka 2012-02-24 13:11:51

回答

1
  1. 使用fgetcsv讀取CSV文件。
  2. 關閉文件。
  3. 使用「w」(寫入)模式打開文件。
  4. 編寫標題。
  5. 關閉文件。
  6. 使用「a」(追加)模式打開文件。
  7. 使用fputcsv編寫CSV文件。 Voila!
1

只要按照您提供的方式進行操作即可。沒有簡單的方法來在開始而不是結束時擴展文件。這就像寫在紙上。在文本下方添加新行很容易,但不能在文本上面寫上。

請勿使用fopen($file, "r+")fopen($file, "c"),因爲這會在您的文件的開頭或全部行中刪除現有行。

0

爲什麼不手動在代碼中定義標題,特​​別是如果每​​個文件都有相同的標題? 如果你真的需要插入頭到CSV文件,對其進行處理之前,也許你應該考慮使用sed這樣的:sed -i 1i'"header 1","header 2"' file.csv

2

請試試這個..更簡單,開門見山。

$file = 'addline.csv'; 
    $header = "Name, IP, Host, RAM, Task, NS \r\n"; 
    $data = file_get_contents($file); 
    file_put_contents($file, $header.$data); 

你完成了。希望這有助於...