向 CSV 文件添加新行
Posted
技术标签:
【中文标题】向 CSV 文件添加新行【英文标题】:Add a new line to a CSV file 【发布时间】:2012-07-09 02:18:33 【问题描述】:如果我在服务器上保存了一个 CSV,我如何使用 php 编写给定的行,比如在它的底部写 142,fred,elephants
?
【问题讨论】:
这就是所谓的appending 看文件打开时的模式,经常有open 用于追加文件系统函数。 【参考方案1】:打开 CSV 文件进行附加 (fopen
Docs):
$handle = fopen("test.csv", "a");
然后添加您的线路 (fputcsv
Docs):
fputcsv($handle, $line); # $line is an array of strings (array|string[])
然后关闭句柄(fclose
Docs):
fclose($handle);
【讨论】:
@fvu:不是真的。+
不是必需的,如果文件不存在,a
也会单独创建文件。 +
用于阅读支持。见"'a' 只写打开;将文件指针放在文件末尾。如果文件不存在,请尝试创建它。" de.php.net/manual/en/function.fopen.php
@Dale:不是那个意思。添加了一个更琐碎的最后一句话,不能那么容易读错。不要在这里伤害任何人的感情。
如果您包含 $line
需要是一个字符串数组,而不是实际的行本身,将会有所帮助。
@Overcode:对于行本身,请使用fputs / fwrite - 如果您想写入一条记录,请使用换行符 ("\n"
) 终止它,因为该字符通常用于分隔 UNIX 文本文件中的记录。跨度>
【参考方案2】:
您可以为文件使用面向对象的接口类 - SplFileObject http://php.net/manual/en/splfileobject.fputcsv.php (PHP 5 >= 5.4.0)
$file = new SplFileObject('file.csv', 'a');
$file->fputcsv(array('aaa', 'bbb', 'ccc', 'dddd'));
$file = null;
【讨论】:
【参考方案3】:这个解决方案对我有用:
<?php
$list = array
(
'Peter,Griffin,Oslo,Norway',
'Glenn,Quagmire,Oslo,Norway',
);
$file = fopen('contacts.csv','a'); // 'a' for append to file - created if doesn't exit
foreach ($list as $line)
fputcsv($file,explode(',',$line));
fclose($file);
?>
参考:https://www.w3schools.com/php/func_filesystem_fputcsv.asp
【讨论】:
【参考方案4】:如果您希望每个拆分文件保留原始文件的标题;这是hakre答案的修改版本:
$inputFile = './users.csv'; // the source file to split
$outputFile = 'users_split'; // this will be appended with a number and .csv e.g. users_split1.csv
$splitSize = 10; // how many rows per split file you want
$in = fopen($inputFile, 'r');
$headers = fgets($in); // get the headers of the original file for insert into split files
// No need to touch below this line..
$rowCount = 0;
$fileCount = 1;
while (!feof($in))
if (($rowCount % $splitSize) == 0)
if ($rowCount > 0)
fclose($out);
$out = fopen($outputFile . $fileCount++ . '.csv', 'w');
fputcsv($out, explode(',', $headers));
$data = fgetcsv($in);
if ($data)
fputcsv($out, $data);
$rowCount++;
fclose($out);
【讨论】:
以上是关于向 CSV 文件添加新行的主要内容,如果未能解决你的问题,请参考以下文章
如何在nodejs json2csv中的现有csv文件中追加新行?