Home > Backend Development > PHP Tutorial > php导出非乱码非乱序 奇葩问题求大神挫进来帮帮小弟

php导出非乱码非乱序 奇葩问题求大神挫进来帮帮小弟

WBOY
Release: 2016-06-23 13:54:55
Original
855 people have browsed it



上面第一个图是导出后的效果图,第二张是数据库实际数据,细心的哥们就发现导出的图后三位全部变为0,这神马情况啊

求大神指点
代码如下:

 <?phpdefine('NOROBOT', true);define('CURSCRIPT', 'charge');require_once './include/common.inc.php';header("Content-type:application/vnd.ms-excel;charset=utf-8");header("Content-Disposition:attachment;filename=充值卡.xls");$page = $page ?: 1; $results = array(); $condition = '';		  		 echo   "被充值手机号"."\t";  		 echo   "充值卡序列号"."\t";  		 echo   "充值金额"."\t"; 		 echo   "实充额度"."\t";				 echo   "充值时间"."\t";$query = $mysqli->multi_query('CALL UP_User_GetCardInfo("'.$condition.'","'.$page.'","900000")')  or die($mysqli->error);$query = $mysqli->store_result();		 while ($record = mysqli_fetch_array($query, MYSQLI_BOTH)){		$phone = $record['phone'];		$cardid = $record['cardid'];			$charge = $record['charge'];			$achieve = $record['achieve'];			$chgdate =  $record['useDate'];	 								echo   "\n"; 		echo   $phone."\t";		echo   $cardid."\t"; 		echo   $charge."\t"; 		echo   $achieve."\t"; 		echo   $chgdate."\t"; 				}if(is_object($query)) 	$query->free_result();$mysqli->next_result();   ?>
Copy after login


回复讨论(解决方案)

没人!

用另外一种方法也是一样的效果,代码如下:

 <?php//iconv("utf8","gb2312",$v)。数据库用的UTF8,导出csv时如不转换excel打开中文将显示乱码(文本正常)require_once './include/common.inc.php';function exportToCsv($csv_data, $filename = 'export.csv') {    $csv_terminated = "\n";    $csv_separator = ",";    $csv_enclosed = '"';    $csv_escaped = "\\";    // Gets the data from the database    $schema_insert = '';    $out = '';    // Format the data    foreach ($csv_data as $row)    {        $schema_insert = '';        $fields_cnt = count($row);        //printr($row);        $tmp_str = '';        foreach($row as $v)        {            $tmp_str .= $csv_enclosed.str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, iconv("utf8","gb2312",$v)).$csv_enclosed.$csv_separator;        } // end for                $tmp_str = substr($tmp_str, 0, -1);        $schema_insert .= $tmp_str;        $out .= $schema_insert;        $out .= $csv_terminated;    } // end while    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");    header("Content-Length: " . strlen($out));    header("Content-type: text/x-csv;charset=utf-8");    header("Content-Disposition:filename=$filename");#header('Content-Disposition: attachment;filename="'.iconv('utf-8', "gb2312", $filename));    echo $out;}#$title = array("uid","username","company");#$title = $_SESSION["exp_title"];$title = array();$field = array();foreach ($_SESSION["exp_title"] as $key => $val){  $title[] = $key;  $field[] = $val;}#$query = $mysqli->query("select uid,username,phone from ccna_members limit 10") or die($mysqli->error);#$query = $mysqli->multi_query("select * from ccna_members limit 10")  or die($mysqli->error);$query = $mysqli->multi_query($_SESSION["exp_sql"])  or die($mysqli->error);$query = $mysqli->store_result();//$csv_data = array(array('uid', 'username'));//所有记录就存这啦$csv_data = array(array());//压入表头,将字段放到第一行for ($i=0; $i < count($field); $i++) {	  $csv_data[0][$i]= $field[$i];}while($row = mysqli_fetch_array($query,MYSQLI_BOTH)){	//array_push($csv_data, array($row[0],$row['username']));		$row_array = array();	for ($i=0; $i < count($title); $i++) {		#array_push($row_array,iconv("utf-8","gb2312",$row[$title[$i]]));		array_push($row_array,$row[$title[$i]]);	}	array_push($csv_data,$row_array);}exportToCsv($csv_data,$_SESSION["exp_filename"].".csv");?>
Copy after login

echo   $cardid."\t";
改为
echo   “‘$cardid\t";

echo   $cardid."\t";
改为
echo   “‘$cardid\t";


还是一样,不行。谢谢你的回答

怎么可能,你产生的就是文本文件,只不过后缀不同罢了


我加你扣扣可以吗?

怎么可能,你产生的就是文本文件,只不过后缀不同罢了



可以我改成echo   "$cardid\t";    还是不行,不知道为什么。

 "’$cardid\t"; 
有个单引号
是也在想:字太小可能看不清

 "’$cardid\t"; 
有个单引号
是也在想:字太小可能看不清



谢谢。 结贴给分

?成字符串就可以了。

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template