用PHP添加一行到csv文件的顶部(第一行)
问题描述:
需要用php处理大型的csv文件。 使用fgetcsv和性能似乎相当不错。为了更好/更快的处理,我希望csv文件在第一行有列名,现在缺少这些列名。用PHP添加一行到csv文件的顶部(第一行)
现在我想在用fgetcsv处理文件之前,先用PHP将带有列名的顶行添加到带有PHP的csv文件中。
有没有办法用php轻松地在php文件顶部添加一行?或者这是否意味着我必须采取下面的方法?
- 列表项
- 列表项
- 创建一个临时文件
- 添加列名于该临时文件
- 读取原来的CSV文件内容
- 把原来的CSV内容到临时文件
- 删除原文件
- 重命名临时文件
任何有关如何以最有效的方式做到这一点的反馈是高度赞赏。感谢您的时间:)
答
- 使用fgetcsv读取CSV文件。
- 关闭文件。
- 使用“w”(写入)模式打开文件。
- 编写标题。
- 关闭文件。
- 使用“a”(追加)模式打开文件。
- 使用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);
你完成了。希望这有助于...
试试这个库可能是有用的http://phpexcel.codeplex.com/wikipage?title=例子 – 2012-02-24 09:33:20
可能重复的[我如何预先开始文件开始?](http:// stackoverflow .com/questions/3332262/how-do-i-prepend-file-to-begining) – Treffynnon 2012-02-24 09:55:34
你是对的..在搜索网站时没有发现..谢谢 – quokka 2012-02-24 13:11:51