我正在使用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文件:
更新:使用Notepad ++打开我的CSV文件
答案 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;;
良好做法是删除最后?>