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

jeadong_flash 2014-06-20 04:54:30


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

求大神指点
代码如下:

<?php
define('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();





?>
...全文
208 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2014-06-20
  • 打赏
  • 举报
回复
轉成字符串就可以了。
jeadong_flash 2014-06-20
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
"’$cardid\t"; 有个单引号 是也在想:字太小可能看不清
谢谢。 结贴给分
xuzuning 2014-06-20
  • 打赏
  • 举报
回复
"’$cardid\t"; 有个单引号 是也在想:字太小可能看不清
jeadong_flash 2014-06-20
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
怎么可能,你产生的就是文本文件,只不过后缀不同罢了
可以我改成echo "$cardid\t"; 还是不行,不知道为什么。
jeadong_flash 2014-06-20
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
我加你扣扣可以吗?
xuzuning 2014-06-20
  • 打赏
  • 举报
回复
xuzuning 2014-06-20
  • 打赏
  • 举报
回复
怎么可能,你产生的就是文本文件,只不过后缀不同罢了
jeadong_flash 2014-06-20
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
echo $cardid."\t"; 改为 echo “‘$cardid\t";
还是一样,不行。谢谢你的回答
xuzuning 2014-06-20
  • 打赏
  • 举报
回复
echo $cardid."\t"; 改为 echo “‘$cardid\t";
jeadong_flash 2014-06-20
  • 打赏
  • 举报
回复
用另外一种方法也是一样的效果,代码如下:

 <?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");
?>
jeadong_flash 2014-06-20
  • 打赏
  • 举报
回复
没人!

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧