csv文件中的空行

时间:2014-12-03 08:40:49

标签: php mysql cakephp csv

我需要一些帮助,我将表导出到csv文件,这为我添加了8个空行。为什么?也许任何人都可以帮我一点。

export.ctp文件

<?php
foreach ($data as $row):
    foreach ($row['Kontaktid'] as &$cell):
        // Escape double quotation marks
        $cell = '"' . preg_replace('/"/','""',$cell) . '"';
    endforeach;
    echo implode(',', $row['Kontaktid']) . "\n";
endforeach;
?>

这就是这样做

enter image description here

但我不想要这些空行,当我将这个文件导入mysql时,它也添加了这些空行。

感谢您的帮助!

如果我输入var dump,那么我就明白了。 enter image description here

4 个答案:

答案 0 :(得分:3)

试试这个:

$fh = fopen('./file1.csv', 'wt');
foreach ($data as $row) {
    if (! empty($row['Kontaktid'])) {
        fputcsv($fh, $row['Kontaktid']);
    }
}
fclose($fh);

'./file1.csv'替换为您的文件名和路径。如果您需要在屏幕上转储CSV内容,请将第一行替换为$fh = STDOUT;

答案 1 :(得分:1)

使用你的代码:

<?php
foreach ($data as $row):
    $isRowEmpty = false;
    foreach ($row['Kontaktid'] as &$cell):
        // we assume the row is empty if the first cell is empty
        if(empty($cell)) {
            $isRowEmpty = true;
            break;
        } else {
            // Escape double quotation marks
            $cell = '"' . preg_replace('/"/','""',$cell) . '"';
        }
    endforeach;
    if(!$isRowEmpty) {
        echo implode(',', $row['Kontaktid']) . "\n";
    }
endforeach;
?>

希望这有帮助!

答案 2 :(得分:1)

检查一下,你的行不是空的:

<?php
foreach ($data as $row):
    if (!isset($row['Kontaktid']) || !$row['Kontaktid']) continue; // <-add this line
    foreach ($row['Kontaktid'] as &$cell):
        // Escape double quotation marks
        $cell = '"' . preg_replace('/"/','""',$cell) . '"';
    endforeach;
    echo implode(',', $row['Kontaktid']) . "\n";
endforeach;

可能问题不在此代码中。
检查两次,没有任何换行在任何地方回响 可能是这样的:

   <?php
     //php code
    ?>
    ↓
    ↓
    ↓

<?php ?>区块之外的所有内容均等同于echo "...";
因此,这些换行符的打印方式与echo "\n\n\n\n";

类似

良好做法是删除最后?>

答案 3 :(得分:0)

添加:

if (isset($row['Kontaktid']) && strlen($row['Kontaktid']) && !empty($row['Kontaktid']))

之前:

echo implode(',', $row['Kontaktid']) . "\n";