Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 283568|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-5 15:47:13 | 显示全部楼层 |阅读模式

    直接贴代码吧

    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']);
       //给C列的文字加上链接
        $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样式的一些设置,大家可以上网查一下相关的资料~

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-29 01:20 , Processed in 0.068025 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表