php之自定义excel表格

一,开发过程中遇到了要用自定义excel表格,记录如下
里面对用的sql对相应的调整即可

方法:

    public function downLoadFile()
    {
        import('Vendor.PHPExcel');
        $phpExcel = new \PHPExcel();
        $phpExcel->getDefaultStyle()->getFont()->setName('宋体');
        $phpExcel->getDefaultStyle()->getFont()->setSize(11);
        $phpExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $phpExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);


        $workSheet = $phpExcel->getActiveSheet();
        $workSheet->getColumnDimension('A')->setWidth(8.38);
        $workSheet->getColumnDimension('B')->setWidth(16.88);
        $workSheet->getColumnDimension('C')->setWidth(11.88);
        //合并单元格A1到AH1
        $workSheet->mergeCells('A1:C1');

        //设置边框
        $workSheet->getStyle('A1:C15')->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);

        //设置行高为42
        $workSheet->getRowDimension(1)->setRowHeight(42);
        //在第一行写入'用户排班表'

        $workSheet->setCellValue('A1', '技能导入表');

        //设置样式
        $workSheet->getStyle('A1')->getFont()->setSize(18);
        $workSheet->getStyle('A1')->getFont()->setBold(true);

        $workSheet->setCellValue('A2', '序号');
        $workSheet->setCellValue('B2', '部门名称');
        $workSheet->setCellValue('C2', '技能 ');
        //插入数据 B列为部门
        $departStr = '';
        $departArr =  M('user_organize')->where(array('level'=>6,'is_del'=>0))->group('judgecode')
            ->order('sort_num desc')->select();
        foreach ($departArr as $ke => $va) {
            $departStr .= $va['name'] . ',';
            $departIds[] = $ke;
        }
        $departStr = rtrim($departStr, ',');
        for($i = 3; $i <= 15; $i++) {
            $objValidation = $workSheet->getCell('B' . $i)->getDataValidation();
            $objValidation->setType( \PHPExcel_Cell_DataValidation::TYPE_LIST );
            $objValidation->setErrorStyle( \PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
            $objValidation->setAllowBlank(false);
            $objValidation->setShowInputMessage(true);
            $objValidation->setShowErrorMessage(true);
            $objValidation->setShowDropDown(true);
            $objValidation->setErrorTitle('输入错误');
            $objValidation->setError('此值不在下拉列表中。');
            $objValidation->setPromptTitle('请从列表中选择');
            $objValidation->setPrompt('请从单元格下拉列表中选择一个值。');
            $objValidation->setFormula1('"' . $departStr . '"');  // Make sure to put the list items between " and "  !!!
            $workSheet->getCell('B' . $i)->setDataValidation($objValidation);
        }

        //合并单元格A35-AH42
        $workSheet->mergeCells('A12:C15');
        //设置A35的文字对齐格式
        $workSheet->getStyle('A12')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
        $workSheet->getStyle('A12')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_TOP);

        //让单元格内换行符起作用
        $workSheet->getStyle('A12')->getAlignment()->setWrapText(true);
        //定界符结束
        $introduce = <<<EOF
//1、为保证导入数据成功,序号,部门名称和技能必填且要保证正确性哦!(重要)\n 2、同一部门的多个技能用英文符号(,)隔开,技能名不能重复并且当个技能名称不能大于20个字!\n
EOF;
        $workSheet->setCellValue('A12', $introduce);

        $result = \PHPExcel_IOFactory::createWriter($phpExcel, 'Excel2007');
        //返回的对象太大,通过网络传输会有丢失信息情况,所以序列化
        return serialize($result);
    }

调用:

    /*
     * 下载样式
     * */
    public function downLoadFile()
    {
        import('Vendor.PHPExcel');
        $RpcClient  = RpcClient::getInstance();
        $result     = $RpcClient->sendRequest('/User/WorkSkill', 'downLoadFile', []);
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=1.xlsx");
        header('Cache-Control: max-age=0');
        $result1 = unserialize($result);
        $result1->save('php://output');
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容