簡體   English   中英

CSV文件中的空行

[英]Empty rows in csv file

我需要一點幫助,我將表導出到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;
?>

這就是這樣做

在此處輸入圖片說明

但是我不希望這些空行,當我將此文件導入mysql時,它也添加了這些空行。

感謝您的幫助!

如果我輸入var dump,那么我得到了。 在此處輸入圖片說明

嘗試這個:

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

'./file1.csv'替換為您的文件名和路徑。 如果需要在屏幕上轉儲CSV內容,則將第一行替換為$fh = STDOUT;

使用您的代碼:

<?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;
?>

希望這可以幫助!

只要檢查一下,您的行就不會為空:

<?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";

好的做法是刪除最后一個?>

添加:

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

之前:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM