登录  /  注册
博主信息
博文 38
粉丝 1
评论 0
访问量 60529
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP数据迁移到EXCEL表格
Dai的博客
原创
826人浏览过
<?
php
/**
 * Created by PhpStorm.
 * User: Dai
 * Date: 2018-03-26
 * Time: 16:11
 */
/**
 * 批量导出数据
 * @param $arr 从数据库查询出来,即要导出的数据
 *  $name excel表歌名
 */
function expExcel($arr, $name)
{

    require_once 'PHPExcel.php';
    //实例化
    $objPHPExcel = new PHPExcel();
    /*右键属性所显示的信息*/
    $objPHPExcel->getProperties()->setCreator("Dai")//作者
    ->setLastModifiedBy("Dai")//最后一次保存者
    ->setTitle('数据EXCEL导出')//标题
    ->setSubject('数据EXCEL导出')//主题
    ->setDescription('导出数据')//描述
    ->setKeywords("excel")//标记
    ->setCategory("result file");  //类别


    //设置当前的表格
    $objPHPExcel->setActiveSheetIndex(0);
    // 设置表格第一行显示内容
    $objPHPExcel->getActiveSheet()
        ->setCellValue('A1', '序号')
        ->setCellValue('B1', '姓名')
        ->setCellValue('C1', '日期')
        ->setCellValue('D1', '上班时间')
        ->setCellValue('E1', '下班时间')
        ->setCellValue('F1', '迟到')
        ->setCellValue('G1', '早退')
        ->setCellValue('H1', '加班时间')
        ->setCellValue('I1', '总加班时间')
        ->setCellValue('J1', '总迟到时间')
        ->setCellValue('K1', '总早退时间')
        //设置第一行为红色字体
        ->getStyle('A1:k1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

    $key = 1;
    $start = 1;
    $end = 1;
    /*以下就是对处理Excel里的数据,横着取数据*/
    foreach ($arr as $v) {

        //设置循环从第二行开始
        $key++;
        $objPHPExcel->getActiveSheet()
            //Excel的第A列,name是你查出数组的键值字段,下面以此类推
            ->setCellValue('A' . $key, $key - 1)
            ->setCellValue('B' . $key, $v['name'])
            ->setCellValue('C' . $key, $v['date'])
            ->setCellValue('D' . $key, $v['shang'])
            ->setCellValue('E' . $key, $v['xia'])
            ->setCellValue('F' . $key, $v['late'])
            ->setCellValue('G' . $key, $v['early'])
            ->setCellValue('H' . $key, $v['add'])
            ->setCellValue('I' . $key, $v['totalAdd'])
            ->setCellValue('J' . $key, $v['totalLate'])
            ->setCellValue('K' . $key, $v['totalEarly']);
        if ($v['isAddDate']) {
            $objPHPExcel->getActiveSheet()
                ->getStyle('A' . $key . ':H' . $key . '')
                ->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet()
                ->getStyle('A' . $key . ':H' . $key . '')
                ->getFill()->getStartColor()->setARGB('FF808080');
        }
        if ($v['late']) {
            $objPHPExcel->getActiveSheet()
                ->getStyle('A' . $key . ':H' . $key . '')
                ->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet()
                ->getStyle('A' . $key . ':H' . $key . '')
                ->getFill()->getStartColor()->setARGB('5FB000');
        }
        if ($v['early']) {
            $objPHPExcel->getActiveSheet()
                ->getStyle('A' . $key . ':H' . $key . '')
                ->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet()
                ->getStyle('A' . $key . ':H' . $key . '')
                ->getFill()->getStartColor()->setARGB('0017C405');
        }
        if (!empty($v['totalAdd'])) {

            //将单元格进行合并
            $objPHPExcel->getActiveSheet()->mergeCells('I' . $start . ':I' . $end . '');
            $objPHPExcel->getActiveSheet()->mergeCells('J' . $start . ':J' . $end . '');
            $objPHPExcel->getActiveSheet()->mergeCells('K' . $start . ':K' . $end . '');

            //将合并的单元格内容垂直方式设置为垂直居中
            $objPHPExcel->getActiveSheet()->getStyle('I' . $start . ':K' . $end . '')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $end += 1;
            $start = $end;
        } else {
            $end += 1;
        }
    }
    //设置当前的表格
    $objPHPExcel->setActiveSheetIndex(0);
    header('Content-Type: application/vnd.ms-excel'); //文件类型
    header('Content-Disposition: attachment;filename="' . $name . '.xls"'); //文件名
    header('Cache-Control: max-age=0');
    header('Content-Type: text/html; charset=utf-8'); //编码
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  //excel 2003
    $objWriter->save('php://output');
    exit;

}

/***********调用**********************/
header("Content-type:text/html;charset=utf-8");
//连接数据库
try {

    $dsn = 'mysql:host=localhost;dbname=kaoqing';
    $username = 'root';
    $passwd = 'root';
    $pdo = new PDO($dsn, $username, $passwd);
    $pdo->query("SET NAMES utf8");

} catch (PDOException $e) {
    echo $e->getMessage();
}

//先获取数据
$sql = "select * from time2";
//先查询一下phone表当中的数据
$res = $pdo->prepare($sql);
$s = $res->execute();
if (false == $s) {
    echo "查询失败";
    exit;
}
$a = $res->fetchAll(PDO::FETCH_ASSOC);

//excel表格名
$name = date('Y-m-d', time()) . "打卡表";

//调用
expExcel($a, $name);


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学