我正在使用fputcsv来创建一个csv,但是当我在excel中打开它时,它输出的数据在第三行开始.为什么是这样?
我想使用fputcsv创建一行列标题,这是最好的方法.
public function indexAction()
{
$this->outputCSV();
//$this->view->navigation = $navigation = Engine_Api::_()->getApi('menus', 'core')->getNavigation('passport_admin_main', array(), 'passport_admin_main_outofarea');
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
header('Content-Disposition: attachment; filename="OutOfAreaReport.csv"');
header('Content-type: application/excel');
readfile('OutOfAreaReport.csv');
}
public function outputCSV(){
$list = array (
array('aaa', 'saasasbbb', 'ccdddc', 'dddd')
);
$fp = fopen('php://output', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
}
Run Code Online (Sandbox Code Playgroud)
因为您正在编写数据php://output
,我假设您提供要下载的文件?
好吧,文件中的额外新行来自你的脚本,你已经输出了它们.
这里最常见的罪魁祸首是<?php
在脚本中的开始标记之前引出空格:
错误:
<?php // Your code here
对:
<?php // Your code here
编辑感谢@SDC提醒我这也适用于您所包含的任何文件.对于这些文件,您还需要确保在结束?>
标记之后没有尾随空格,或者最好完全删除结束标记,因为脚本无需正常工作.
小智 5
我知道这已被标记为已回答,但当我遇到类似的问题时,我有很多包含,所以我添加了ob_clean; 清除缓冲区,解决了空间问题.例:
public function outputCSV(){
$ list = array(array('aaa','saasasbbb','ccdddc','dddd'));
//add here
ob_clean;
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)$fp = fopen('php://output', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp);
}
归档时间: |
|
查看次数: |
2331 次 |
最近记录: |