Home  >  Article  >  Backend Development  >  关于php导出csv的问题

关于php导出csv的问题

WBOY
WBOYOriginal
2016-06-23 14:02:251018browse

在线等,问下大家是否知道,php在下载csv文件时文件中为什么出现html源码 xls文件却是正常的


回复讨论(解决方案)

基于你糟糕的描述,我只能给出一个糟糕的答案??你的代码有问题

我将php生成的csv文件放在页面,点击可下载,打开下载csv 打开后内容最后出现一段html代码 明白了吗!

生成时就有了
要看到你的代码

if ($opt == '') {			if (!in_array($userid, $okuser)) {	            echo "你没有权限浏览此页面";	            exit;            } else {            	$web_folder = "/tj/";				$log_folder = "/tj/";            }			$logFile = array();			if (is_dir($log_folder)) {            if ($dh = opendir($log_folder)) {                while (($file = readdir($dh)) != false) {                    if ($file != "." && $file != "..") {                        $logFile[$file] = $file . "&ver=" . mt_rand();                    }                }            }		}		arsort($logFile);				$smarty->assign("logfile",$logFile);		$smarty->assign("web_folder",$web_folder);		} 		elseif($opt == 'download'){			if (!in_array($userid, $okuser)) {	            echo "你没有权限浏览此页面";	            exit;            }			$filename =  $cgi->filename;			header("Content-Type:text/csv");			header("Content-Type:text/xls");			header("Content-Disposition:attachment;filename=".$filename);			readfile("/tj/".$filename);		}		else {			echo "你没有权限浏览此页面";            exit;		}
 这是php code
{if $opt == ''}{include file="menus.htm"}<div>统计表:</div><br/><br/><br/><TABLE style='width:90%' border="0" cellpadding="2"><tr>    <td>    下载链接    </td></tr><TR>	<TD>	{foreach from=$logfile key=k item=v}	<li><a href="mylog?filename={$v}&opt=download" target="_blank">{$k}</a></li>	{/foreach}	</TD></TR></TABLE><br/><TABLE style='width:90%' border="0"</TABLE>{include file="foot.htm"}{/if}{if $opt=='download'}{/if}
  这是html code

php生成的a.csv文件可以肯定是对的,但通过a页面下载,把a页面的html源码也输出到csv文件中了
比较郁闷!

目测你最后一个table 没闭合。

我粘贴的问题  闭合了,看来这个问题很少会遇到啊 !

header("Content-Type:text/csv");
            header("Content-Type:text/xls");

怎么发送两个content-type头

嗯 对因为我要下载的东西有 xls 格式 也有csv格式
我查了下,找到问题了,问题出在 

readfile("/tj/".$filename);
这一句,
读取完了文件给一个die(); 抑制页面输出,否则,导出的excel 会出现请求页面的html源码;
解决办法:在redfilie这一句后加一个die()或者exit; 即可解决!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn