用PHP添加一行到csv文件的顶部(第一行)

问题描述:

需要用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:// * .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. 使用fgetcsv读取CSV文件。
  2. 关闭文件。
  3. 使用“w”(写入)模式打开文件。
  4. 编写标题。
  5. 关闭文件。
  6. 使用“a”(追加)模式打开文件。
  7. 使用fputcsv编写CSV文件。 Voila!

只要按照您提供的方式进行操作即可。没有简单的方法来在开始而不是结束时扩展文件。这就像写在纸上。在文本下方添加新行很容易,但不能在文本上面写上。

请勿使用fopen($file, "r+")fopen($file, "c"),因为这会在您的文件的开头或全部行中删除现有行。

为什么不手动在代码中定义标题,特​​别是如果每​​个文件都有相同的标题? 如果你真的需要插入头到CSV文件,对其进行处理之前,也许你应该考虑使用sed这样的:sed -i 1i'"header 1","header 2"' file.csv

请试试这个..更简单,开门见山。

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

你完成了。希望这有助于...