欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。

程序员文章站 2022-03-25 22:57:53
直接贴代码吧 PHP版本5.6.38 mysql版本5.0 如果导出来的Excel文字都是乱码的话,一定要在header()前面加上ob_end_clean()! 还有很多关于Excel样式的一些设置,大家可以上网查一下相关的资料~ ......

直接贴代码吧

php版本5.6.38

mysql版本5.0

//连接数据库
$mysql_server_name = "*.*.*.*";
$mysql_username="user";
$mysql_password="dbpasswd";
$mysql_database="test";
$conn = mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
//设置字符集,如果不设置的话中文可能会乱码
$conn->query("set names utf8");

//查询数据
$sql = "select * from testdata where  inserttime > '2019-09-13' and inserttime <'2019-0916'";
$result = $conn->query($sql);
//遍历将数据放入数组中
$data =array();
while ($row = $result->fetch_assoc())
{
    $data[] = $row;
}

//将查询出来的数据导入excel中
require_once('./phpexcel/phpexcel.php');
// 创建excel文件对象
$objphpexcel = new phpexcel();
// 设置文档信息,这个文档信息windows系统可以右键文件属性查看
$objphpexcel->getproperties()->setcreator("wnn")
    ->setlastmodifiedby("wnn")
    ->settitle("原创文章链接");
$objphpexcel->setactivesheetindex(0)
    ->setcellvalue('a1','文章id')
    ->setcellvalue('b1','标题')
    ->setcellvalue('c1','链接')
    ->setcellvalue('d1','作者')
    ->setcellvalue('e1','发布时间');

//设置excel表单根据内容大小变化
$objphpexcel->getactivesheet()->getcolumndimension('a')->setautosize(true);
$objphpexcel->getactivesheet()->getcolumndimension('b')->setautosize(true);
$objphpexcel->getactivesheet()->getcolumndimension('c')->setautosize(true);
$objphpexcel->getactivesheet()->getcolumndimension('d')->setautosize(true);
$objphpexcel->getactivesheet()->getcolumndimension('e')->setautosize(true);

//$i=1是标题行
$i=2;
foreach ($data as $k=>$v){
    $objphpexcel->setactivesheetindex(0)
        ->setcellvalue('a'.$i,$v['id'])
        ->setcellvalue('b'.$i,$v['title'])
        ->setcellvalue('c'.$i,$v['arcurl'])
        ->setcellvalue('d'.$i,$v['writer'])
        ->setcellvalue('e'.$i,$v['senddate']);
    $objphpexcel->getactivesheet()->getcell('c'.$i)->gethyperlink()->seturl($v['arcurl']);
    $i++;
}

//给c列的超链接字体颜色变成蓝色,并加上蓝色的下划线
$length = count($data)+1;
$objphpexcel->getactivesheet()->getstyle( 'c2:c'.$length)->getfont()->getcolor()->setargb(phpexcel_style_color::color_blue);

//文件名称
$filename=urlencode('原创作品').'_'.date('ymdhis');

//生成xls文件
ob_end_clean();//清除缓冲区,避免乱码
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');

如果导出来的excel文字都是乱码的话,一定要在header()前面加上ob_end_clean()!

还有很多关于excel样式的一些设置,大家可以上网查一下相关的资料~