导出CSV文件有许多空行

时间:2014-12-08 02:57:38

标签: php sql-server cakephp csv cakephp-1.3

我正在使用CakePHP 1.3和MSSQL Server 2012制作应用程序。我成功地从数据库中创建了导出CSV文件。

第一次,我没有遇到任何问题。我继续在我的应用程序中创建其他功能。而且我试图再次测试导出功能。

问题出现了。问题出在我的CSV文件中,它出现了很多空行。我检查了我的数据库,它没有空值,在我的控制器和export.ctp中也是如此。

我不知道为什么问题发生了,所以有人能意识到我的错误吗?

我的控制器:

function csv_export() {
    $this->set('title_for_layout','Export Words List');
    Configure::write('debug',0);
    $this->layout=false;
    $filename = 'Wordlist_'.date('YmdHis');
    $th=array('id','avoidance_word','avoidance_word_yomi','replace_word','replace_word_yomi','creator','create_time','updator','update_time','invalid_flg');
    $Th_name=array('ID','Avoidance Words','Avoidance Words Yomi','Replace Word','Replace Word Yomi','Creator','Create Time','Updator','Update Time','Invalid Flag');
    $td=$this->MAvoidanceWord->find('all', array('fields'=>$th));
    $this->set(compact('filename','Th_name','td'));
}

我的观点:

<?php
$csv->addRow($Th_name);
foreach ($td as $t){
    $csv->addRow();
    $csv->addField($t['MAvoidanceWord']['id']);
    $csv->addField($t['MAvoidanceWord']['avoidance_word']);
    $csv->addField($t['MAvoidanceWord']['avoidance_word_yomi']);
    $csv->addField($t['MAvoidanceWord']['replace_word']);
    $csv->addField($t['MAvoidanceWord']['replace_word_yomi']);
    $csv->addField($t['MAvoidanceWord']['creator']);
    $csv->addField($t['MAvoidanceWord']['create_time']);
    $csv->addField($t['MAvoidanceWord']['updator']);
    $csv->addField($t['MAvoidanceWord']['update_time']);
    $csv->addField($t['MAvoidanceWord']['invalid_flg']);
    $csv->endRow();}
    $csv->setFilename($filename);
    echo $csv->render(true,'UTF-8');
?>

我的CSV文件:

enter image description here

更新:使用Notepad ++打开我的CSV文件

enter image description here

2 个答案:

答案 0 :(得分:0)

从foreach中删除addRow

foreach ($td as $t){
    // $csv->addRow();
    $csv->addField($t['MAvoidanceWord']['id']); 
    ...

您可以使用addRow(array)addField(多次)和endRow The fact that you have addRow`现在意味着它会多次添加空白行。

第二种方式:尝试在ob_clean();之前添加$csv->addRow($Th_name);

答案 1 :(得分:0)

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

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

<?php ?>区块之外的所有内容均等同于回声&#34; ...&#34;;
因此,这些换行符的打印方式就像echo&#34; \ n \ n \ n \ n&#34;;

良好做法是删除最后?>