phpexecl导出execl表,传值过来的页面和导出execl文件的页面编码方式不符,execl文件导出没有数据

我是从上个php页面传过来的两个值,一个ks,一个khnf,在导出execl表的页面,通过这两个值检索数据库,将检索出的数据导出为execl表,数据库编码是gbk的,除了导出execl表的php文件,其他所有的php文件基本都是gb2312编码,现在的问题是如果不用传过来的值,直接用“2017”,“政工科”两个值来检索数据库,导出的execl文件就是合适的,但只要用了传过来的值,就检索不出来,代码是这样的:

setcategory(‘result file’);
$objphpexcel->setactivesheetindex(0)
->setcellvalue(‘a1′,’工号’)
->setcellvalue(‘b1′,’姓名’)
->setcellvalue(‘c1′,’总分’)
->setcellvalue(‘d1′,’加分’)
->setcellvalue(‘e1′,’扣分’)
->setcellvalue(‘f1′,’基础分’)
->setcellvalue(‘g1′,’等级’)
->setcellvalue(‘h1′,’科室’)
->setcellvalue(‘i1′,’考核年份’);
$i=2;
while($data=mysql_fetch_row($sql)){
$w=mysql_query(“select * from k_ygb where yggh=’$data[0]'”);
$ww=mysql_fetch_row($w);
$objphpexcel->setactivesheetindex(0)
->setcellvalue(‘a’.$i,$data[0])
->setcellvalue(‘b’.$i,$ww[1])
->setcellvalue(‘c’.$i,$data[1])
->setcellvalue(‘d’.$i,$data[2])
->setcellvalue(‘e’.$i,$data[3])
->setcellvalue(‘f’.$i,$data[2]-$data[3]+$data[4])
->setcellvalue(‘g’.$i,$data[4])
->setcellvalue(‘h’.$i,$data[5])
->setcellvalue(‘i’.$i,$data[6]);
$i++;}
$objphpexcel->getactivesheet()->settitle(‘考核信息汇总表’);
$objphpexcel->setactivesheetindex(0);
$filename=urlencode(‘考核信息汇总表’).’_’.date(‘y-m-d’);
header(‘content-type: application/vnd.ms-excel’);
header(‘content-disposition: attachment;filename=”‘.$filename.’.xls”‘);
header(‘cache-control: max-age=0’);
$objwriter = phpexcel_iofactory::createwriter($objphpexcel, ‘excel5’);
$objwriter->save(‘php://output’);
close_connection();
exit;
?>

mysql_query(“set names utf-8”); 这句是网上搜的,我搜的是写的“utf8”,不用传过来的值,execl表就合适,但是如果用传的值,写utf8就全是乱码,我就改成utf-8,改掉之后不乱码了,但是也不合适。

if是做的判断,如果检索“全院”,execl表就是空的,如果检索某个科室,execl表里的汉字就全部是false。

回复讨论(解决方案)

1、mysql_query(“set names utf-8”); 是错误的

要写作 mysql_query(“set names utf8”);

因为 mysql 没有 utf-8 这样的字符集名

2、你贴出的这个代码所在的程序文件是什么编码的

3、调用这个文件的程序是什么编码的

贴出的文件没有声明编码方式,用dreamweaver写的

调用这个文件的编码是gb2312

贴出的文件没有声明编码方式,之前声明过,用声明的,不管声明什么,utf-8还是gb2312,声明了之后再调用,直接让你下载这个php文件,而不是execl表,所以没声明
phpexecl导出execl表,传值过来的页面和导出execl文件的页面编码方式不符,execl文件导出没有数据0

1、 这种是设置浏览器的编码,设置程序文件的编码应该用编辑器设置。

2、mysql 没有utf-8编码,应该是 mysql_query(“set names utf8”);

我用了这句, mysql_query(“set names utf8”);导出的execl表就是乱码的,mysql_query(“set names utf-8”);这样写是没效果的,也就是说,有mysql_query(“set names utf8”);这句,乱码,没这句,不乱吗,这是什么情况啊

我刚看了文件的编码,贴出来的文件,文件的编码方式是utf-8,没有设置过,其他文件,都是ansi的,调用他的文件编码方式也是ansi的,我试着把贴出的文件的编码方式改成ansi,可是改了之后导不出execl表了,直接下载php文件了,三楼一样的情况

setcategory(‘result file’);
$objphpexcel->setactivesheetindex(0)
->setcellvalue(‘a1′,’工号’)
->setcellvalue(‘b1′,’姓名’)
->setcellvalue(‘c1′,’总分’)
->setcellvalue(‘d1′,’加分’)
->setcellvalue(‘e1′,’扣分’)
->setcellvalue(‘f1′,’基础分’)
->setcellvalue(‘g1′,’等级’)
->setcellvalue(‘h1′,’科室’)
->setcellvalue(‘i1′,’考核年份’);
$i=2;
while($data=mysql_fetch_row($sql)){
$w=mysql_query(“select * from k_ygb where yggh=’$data[0]'”);
$ww=mysql_fetch_row($w);
$objphpexcel->setactivesheetindex(0)
->setcellvalue(‘a’.$i,$data[0])
->setcellvalue(‘b’.$i,$ww[1])
->setcellvalue(‘c’.$i,$data[1])
->setcellvalue(‘d’.$i,$data[2])
->setcellvalue(‘e’.$i,$data[3])
->setcellvalue(‘f’.$i,$data[2]-$data[3]+$data[4])
->setcellvalue(‘g’.$i,$data[4])
->setcellvalue(‘h’.$i,$data[5])
->setcellvalue(‘i’.$i,$data[6]);
$i++;}
$objphpexcel->getactivesheet()->settitle(‘考核信息汇总表’);
$objphpexcel->setactivesheetindex(0);
$filename=urlencode(‘考核信息汇总表’).’_’.date(‘y-m-d’);
header(‘content-type: application/vnd.ms-excel’);
header(‘content-disposition: attachment;filename=”‘.$filename.’.xls”‘);
header(‘cache-control: max-age=0’);
$objwriter = phpexcel_iofactory::createwriter($objphpexcel, ‘excel5’);
$objwriter->save(‘php://output’);
close_connection();
exit;
?>

然后另存为utf-8编码的文档

phpexecl导出execl表,传值过来的页面和导出execl文件的页面编码方式不符,execl文件导出没有数据1

Posted in 未分类