在 csv 文件单元格中打印新行

Posted

技术标签:

【中文标题】在 csv 文件单元格中打印新行【英文标题】:printing a new line in a csv file cell 【发布时间】:2013-07-01 02:39:22 【问题描述】:

我正在用 php.ini 生成一个 CSV 文件。我需要在单元格内的新行中打印文本(我可以在 excel 中使用 Ctrl+EnterAlt+输入)。为此,我尝试使用'\n''\r',但没有任何帮助。我怎样才能做到这一点?

我正在使用 yii 扩展 ECSVExport 来生成 csv。

我想要这样的输出:

ID  Value
1   A
    B
2   C
3   E
    FF
    G
4   X

【问题讨论】:

你试过定义 PHP_EOL 吗? 【参考方案1】:

在单元格值中使用"\n"(包裹在" 中)和"\r\n" 作为记录结束标记。如果您的单元格条目包含多行,则您必须将其括在"

$fh = fopen('test1.csv', 'w+');
fwrite($fh, "sep=\t" . "\r\n");
fwrite($fh, 'A' ."\t" . 'B' . "\t" . 'C' . "\r\n");
fwrite($fh, 'D' ."\t" . "\"E\nF\nG\"" . "\t" . 'H' . "\r\n");
fclose($fh);

或(使用变量)

$varA = 'A';
$varB = 'B';
$varC = 'C';
$varD = 'D';
$varE = 'E';
$varF = 'F';
$varG = 'G';
$varH = 'H';
$fh = fopen('test2.csv', 'w+');
fwrite($fh, "sep=\t"."\r\n");
fwrite($fh, $varA . "\t" . $varB . "\t" . $varC . "\r\n");
fwrite($fh, $varD . "\t" . "\"$varE\n$varF\n$varG\"" . "\t" . $varH . "\r\n");
fclose($fh);

(使用fputcsv()

$fh = fopen('test3.csv', 'w+');
fwrite($fh, "sep=\t" . "\r\n");
fputcsv($fh, array('A', 'B', 'C'), "\t");
fputcsv($fh, array('D', "E\nF\nG", 'H'), "\t");
fclose($fh);

或(使用fputcsv() 并使用变量)

$varA = 'A';
$varB = 'B';
$varC = 'C';
$varD = 'D';
$varE = 'E';
$varF = 'F';
$varG = 'G';
$varH = 'H';
$fh = fopen('test4.csv', 'w+');
fwrite($fh, "sep=\t" . "\r\n");
fputcsv($fh, array($varA, $varB, $varC), "\t");
fputcsv($fh, array($varD, "$varE\n$varF\n$varG", $varH), "\t");
fclose($fh);

【讨论】:

我相信这是行尾,而不是 Excel 中“单元格本身”所需的行返回 @Laurence - 在投反对票之前,您是否真的尝试过看看它是否有效? 是的,我有同样的问题,尝试了各种方法。 “\n” 为我在行尾添加了一个新行(因此在 excel 中开始一个新行),而不是单元格值本身的新行。因此,在 excel 或数字中打开 csv 时,我们不想要一行,而是一个单元格内换行符。也许它不工作,因为我在 Mac 上并使用 Numbers。 在仔细检查您的代码时,您会声明此“\”E\nF\nG\“”,因此在封闭的“之前转义斜杠。这将如何与变量一起使用,例如 $value1 是您的 E , $value2 您的 F 等?您能否扩展/编辑您的答案以使其更清楚,因为它首先声明只使用“\n”这是行不通的,因为它自己会换行。也许这个解决方案可以工作,我不确定如何用变量来表示你的答案。例如,这行得通吗? "\"$value1\n$value2\n$value3\"" 如果是这样,第一行是否可以更改为清楚,因为它不是清除。 对,这对我有用 $cellvalue = '"'.$value1."\n".$value2."\n".$value3.'"';请注意围绕整个内容的封闭“”。您能否更新您的帖子以反映这一点?基本上“\n”确实可以独立工作,但仅当将整个内容包含在额外的“”中时。现在我知道了,我想这就是你的意思,但显然我并不清楚,它需要这个使用变量的代码示例(而不是你所拥有的纯文本)。这是我不清楚的一点,也是我无法让它工作的原因。那我就可以投票了!【参考方案2】:

试试这个

"\n"

双引号内

【讨论】:

没有。结果是Finland : 03/07/2013"\n"Ireland : 03/07/2013"\n"Denmark : 03/07/2013 他的意思是整个字符串用双引号,而不是简单的引号。 以防万一有人想使用带有字符串数组的内爆来获取换行符。使用implode(PHP_EOL) 就可以了。

以上是关于在 csv 文件单元格中打印新行的主要内容,如果未能解决你的问题,请参考以下文章

读取包含来自csv的单元格中的字典的熊猫数据框

从上面的单元格中获取值

如何在通过 Pandas 在 csv 中写入多个 for 循环的数据时在单个单元格中附加数据?

pandas将列表list插入到dataframe的单元格中pandas使用read_csv函数读取文件并设置保留数值的前置0( leading zeroes)

如何在一个单元格中查找每个逗号分隔值?

UIButton 在 TableView 单元格中不可见