if(!function_exists('exportExcel')){
    //导出excel文件
    function exportExcel($datas, $save_method='http', $save_path=''){
        set_time_limit(0);
        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);
        $excel_title = '箱子详情列表'.date('YmdHis',time());
        $code = $datas['code'];
        $totalBox = $datas['totalBox'];
        $totalPackages = $datas['totalPackages'];
        $totalWeight = $datas['totalWeight'];
        $data = $datas['data'];
        require_once ROOT_PATH.'/Classes/PHPExcel.php';
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties()
            ->setCreator("Maarten Balliauw")
            ->setLastModifiedBy("Maarten Balliauw")
            ->setTitle("Office 2007 XLSX Test Document")
            ->setSubject("Office 2007 XLSX Test Document")
            ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
            ->setKeywords("office 2007 openxml php")
            ->setCategory("Test result file");
        $row = array('A','B','C','D','E','F','G','H');
        // 设置列宽
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(23);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(18);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(22);
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(23);
        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
        $styleThinBlackBorderOutline = array(
            'borders' => array (
                'outline' => array (
                    'style' => PHPExcel_Style_Border::BORDER_THIN,
                    'color' => array ('argb' => 'FF000000'),                                    ),
            ),
        );
        for($i=0;$i<count($row);$i++){
            //设置边框
            for ($a = 1; $a < 4; $a++) {
                $objPHPExcel->getActiveSheet()->getStyle($row[$i] . $a)->applyFromArray($styleThinBlackBorderOutline);
            }
            //设置居中
            for($j=1;$j<500;$j++){
                $objPHPExcel->getActiveSheet()->getStyle($row[$i].$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle($row[$i].$j)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            }
            //设置背景色
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'1')->getFill()->getStartColor()->setARGB('00FFFF00');
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'2:'.$row[$i].'3')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].'2:'.$row[$i].'3')->getFill()->getStartColor()->setARGB('00DBE5F1');
            //设置换行
            $objPHPExcel->getActiveSheet()->getStyle($row[$i].'2')->getAlignment()->setWrapText(true);
        }
        // 设置行高
        $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(28);
        $objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(66);
        //定义表的前三行
        $objPHPExcel->getActiveSheet()
            ->mergeCells('A1:B1')
            ->mergeCells('C1:D1')
            ->mergeCells('E1:F1')
            ->mergeCells('G1:H1')
            ->mergeCells('B2:B3')
            ->mergeCells('C2:C3')
            ->mergeCells('H2:H3')
            ->mergeCells('G2:G3');
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '客户代码 Code:')
            ->setCellValue('C1', $code)
            ->setCellValue('E1', '日期 Date:')
            ->setCellValue('G1', date('Y-m-d H:i:s',time()))
            ->setCellValue('A2', '总箱数:'.$totalBox."\n".'Total box')
            ->setCellValue('A3', '箱号')
            ->setCellValue('B2', '转运单号'."\n".'Tracking Number')
            ->setCellValue('C2', '订单号')
            ->setCellValue('D2', '总包裹数:'.$totalPackages."\n".'Total Packages')
            ->setCellValue('D3', '包裹重量(g)')
            ->setCellValue('E2', '总箱重(kg):'.$totalWeight."\n".'Total Weight')
            ->setCellValue('E3', '箱重(kg)')
            ->setCellValue('F2', '总箱体积重'."\n".'(长*宽*高cm/5000)')
            ->setCellValue('F3', '箱体积(长*宽*高cm)')
            ->setCellValue('G2', '头程'."\n".'发货方式')
            ->setCellValue('H2', '跟踪号'."\n".'Tracking Number');
        //处理后面的逻辑
        //当前所在的行数
        $num = 4;
        foreach($data as $k => $v){
            //具体订单个数
            $len = count($v);
            $mergeLen = $num + $len-4;
            $objPHPExcel->getActiveSheet()
                ->mergeCells('E'.$num.':E'.$mergeLen)
                ->mergeCells('F'.$num.':F'.$mergeLen)
                ->mergeCells('G'.$num.':G'.$mergeLen)
                ->mergeCells('H'.$num.':H'.$mergeLen);
            $objPHPExcel->setActiveSheetIndex()
                ->setCellValue('A'.$num, $v['boxId'])
                ->setCellValue('E'.$num, $v['weightss'])
                ->setCellValue('G'.$num, $v['carrier_company']);
            for($i=0;$i<$len-3;$i++){
                $objPHPExcel->setActiveSheetIndex()
                    ->setCellValue('A'.$num, $v['boxId'])
                    ->setCellValueExplicit('B'.$num, $v[$i]['tracknumber'],PHPExcel_Cell_DataType::TYPE_STRING)
                    ->setCellValue('C'.$num, $v[$i]['ebay_id'])
                    ->setCellValue('D'.$num, $v[$i]['weight']);
                $num++;
            }
        }
        $objPHPExcel->getActiveSheet()->setTitle($excel_title);
        $objPHPExcel->setActiveSheetIndex(0);
        $filename = $excel_title.'.xls';
        if($save_method == 'file'){
            //保存到文件
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            $full_path = $save_path.$filename;
            //本地使用,线上注释
            //$full_path = iconv('utf-8', 'gbk//IGNORE', $full_path);
            if(is_file($full_path)) unlink($full_path);
            $objWriter->save($full_path);
            return $full_path;
        }else{
            ob_end_clean();
            //直接在浏览器输出
            header('Content-Type: application/vnd.ms-excel');
            header("Content-Disposition: attachment;filename={$filename}");
            header('Cache-Control: max-age=0');
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            $objWriter->save('php://output');
        }
    }
}

PHPExcel导出excel表格的更多相关文章

  1. php:PHPExcel导出excel表格

    一.动态生成的内容如何能当成文件来下载呢? 方法:1.将Content-Type设置成application/octet-stream就可以了,即[header('Content-Type: appl ...

  2. PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法

    方法一:前面加空格 $objActSheet->setCellValue('A1', ' '.'330602198804224688'); 方法二: $objActSheet->setCe ...

  3. tp5.0 composer下载phpexcel 实现导出excel 表格

    tp5.0 composer下载phpexcel 实现导出excel 表格 1.在下载好的tp5.0 框架里面使用 composer 下载phpexcel 的插件 composer require p ...

  4. PHP导入导出excel表格图片(转)

    写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...

  5. php header函数导出excel表格

    推荐一个除了用PHPExcel导出表格之外的另外一种比较简单不需要引入类文件的表格导入方法——header()导出excel表格. 导出表格的步骤封装成了方法,以便于重复使用,代码如下: /** * ...

  6. PHP导入导出excel表格图片的代码和方法大全

    基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...

  7. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  8. .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格

    一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...

  9. java导出excel表格

    java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...

随机推荐

  1. Excel多表合并的宏

    Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As Workbook, WbN As String Dim G As Long ...

  2. 面向对象15.1String类特点

    String 特点: 字符串对象一旦被初始化就不会被改变. public class Ssstring {public static void main(String[] args) { //这个是2 ...

  3. 智联卓聘 卓聘IM(聊聊)开发实践

    1.  卓聘IM开发背景 智联卓聘是智联旗下高端人才招聘平台,成立快4年多,业务增涨每年以100%速度增涨快,同时对产品和研发速度都比较高. 2015年提出IM开发,主要用于后选人与猎头及时交流,降低 ...

  4. FZU 2256 迷宫

    https://vjudge.net/problem/FZU-2256 题意:略 思路: 在比赛的时候想到了一次dfs,一次bfs但是样例都过不了...赛后才知道,距离的更新必须同步,不能先把时光机的 ...

  5. git - 远程分支

    对于用户来说,git给人提交到本地的机会.我们可以在自己的机器上创建不同的branch,来测试和存放不同的代码. 对于代码管理员而言,git有许多优良的特性.管理着不同的分支,同一套源代码可以出不一样 ...

  6. jenkins-APP打包页面展示二维码

    背景: 客户要求在APP打包页面展示二维码.虽然感觉这个功能很鸡肋,但是还是加上吧. 效果展示: 配置: 在上图中,106对应的内容是BuildName,我们可以通过build-name-setter ...

  7. [补] winpcap编程——EAPSOCKET实现校园网锐捷登录(mentohust)

    EAP SOCKET Implement Mentohust 时间20161115 对于EAP协议不了解,可参考上一篇随笔. 通过抓包分析校园网的锐捷登录流程,我在上一篇随笔中实现了EAPSOCKET ...

  8. JavaScript垃圾收集-标记清除和引用计数

    JavaScript具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存. 垃圾收集机制原理:垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间), 周期性地执行这一操作:找出那些 ...

  9. Java中的数值和集合

    数组array和集合的区别: (1) 数值是大小固定的,同一数组只能存放一样的数据. (2) java集合可以存放不固定的一组数据 (3) 若程序事不知道究竟需要多少对象,需要在空间不足时自动扩增容量 ...

  10. SVN分支/合并操作小记

    一.前言 说来惭愧,鄙人从事开发多年,使用svn已经好几个年头了,但是却仅限于update.commit.compare之类的操作,最近想到github上学习别人写的NIO源码,顺便去熟悉git的使用 ...