tp5 excel导出类

1.引入Loader

use think\Loader;

2.导出方法:

/**

 * excel表格导出
 * @param string $fileName 文件名称
 * @param array $headArr 表头名称
 * @param array $data 要导出的数据
 * @author static7  */

function excelExport($fileName = ‘‘, $headArr = [], $data = [], $widths=[]) {
    $fileName = iconv("UTF-8", "GB2312//IGNORE", @$fileName);
    $fileName .=".xls";
    Loader::import(‘PHPExcel.PHPExcel‘);
    Loader::import(‘PHPExcel.PHPExcel.IOFactory.PHPExcel_IOFactory‘);
    $objPHPExcel = new \PHPExcel();
    $objPHPExcel->getProperties();
    $ordA = ord(‘A‘); //65
    $key2 = ord("@"); //64
    foreach ($headArr as $v) {
        if($ordA > ord("Z"))
        {
            $colum = chr(ord("A")).chr(++$key2);//超过26个字母 AA1,AB1,AC1,AD1...BA1,BB1...
        }else{
            $colum = chr($ordA++);
        }
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . ‘1‘, $v);
    }
    $column = 2;
    $objActSheet = $objPHPExcel->getActiveSheet();
    foreach ($data as $key => $rows) { // 行写入
        $ordA = ord(‘A‘);//重新从A开始
        $key2 = ord("@"); //64
            foreach ($rows as $keyName => $value) { // 列写入
                if($ordA > ord("Z"))
                {
                    $colum = chr(ord("A")).chr(++$key2);//超过26个字母 AA1,AB1,AC1,AD1...BA1,BB1...
                }else{
                    $colum = chr($ordA++);
                }
                $objActSheet->setCellValue($colum . $column, $value);
            }
        $column++;
    }
    //表格宽度
    if(count($widths)){
        $ordA = ord(‘A‘);//重新从A开始
        $key2 = ord("@"); //64
        foreach ($widths as  $value) { // 列写入
            if($ordA > ord("Z"))
            {
                $colum = chr(ord("A")).chr(++$key2);//超过26个字母 AA1,AB1,AC1,AD1...BA1,BB1...
            }else{
                $colum = chr($ordA++);
            }
            $objActSheet->getColumnDimension($colum)->setWidth($value);
        }
    }
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘);
    //$objWriter->save(‘./excelFile/‘.$fileName);
    header(‘Content-Type: application/vnd.ms-excel‘);//告诉浏览器将要输出excel03文件
    header(‘Content-Disposition: attachment;filename="‘.$fileName.‘"‘);//告诉浏览器将输出文件的名称(文件下载)
    header(‘Cache-Control: max-age=0‘);//禁止缓存
    $objWriter->save("php://output");
}

3.调用

                //整理显示数据          $data[$k][‘seller‘]=Db::table(‘ims_bj_shopn_member‘)->where(‘id‘,$v[‘staffid‘])->value(‘realname‘);
                $data[$k][‘sign‘]=$v[‘sign‘];
                $data[$k][‘title‘]=$v[‘title‘];
                $data[$k][‘bsc‘]=Db::table(‘sys_departbeauty_relation‘)->alias(‘r‘)->join([‘sys_department‘ => ‘d‘],‘r.id_department=d.id_department‘,‘left‘)->where(‘r.id_beauty‘,$v[‘storeid‘])->value(‘d.st_department‘);
                $data[$k][‘order_sn‘]="\t".$v[‘order_sn‘]."\t";
                $data[$k][‘p_name‘]=$v[‘p_name‘];
                $data[$k][‘p_price‘]=$v[‘tuan_price‘];
                $data[$k][‘insert_time‘]=date(‘Y-m-d H:i:s‘,$v[‘insert_time‘]);
                $data[$k][‘success_time‘]=date(‘Y-m-d H:i:s‘,$v[‘success_time‘]);
                $data[$k][‘status‘]=$statusText;
                $data[$k][‘fqr_pay‘]=$sonList[0][‘pay_price‘];
                $data[$k][‘fqr_tel‘]=$sonList[0][‘mobile‘];
                $data[$k][‘cantuan1‘]=$sonList[1][‘realname‘];
                $data[$k][‘cantuan1_tel‘]=$sonList[1][‘mobile‘];
                $data[$k][‘cantuan1_pay‘]=$sonList[1][‘mobile‘]?$sonList[1][‘pay_price‘]:‘‘;
                $data[$k][‘cantuan1_num‘]=$sonList[1][‘join_num‘];
                $data[$k][‘cantuan2‘]=$sonList[2][‘realname‘];
                $data[$k][‘cantuan2_tel‘]=$sonList[2][‘mobile‘];
                $data[$k][‘cantuan2_pay‘]=$sonList[2][‘mobile‘]?$sonList[2][‘pay_price‘]:‘‘;
                $data[$k][‘cantuan2_num‘]=$sonList[2][‘join_num‘];;
                $data[$k][‘cantuan3‘]=$sonList[3][‘realname‘];
                $data[$k][‘cantuan3_tel‘]=$sonList[3][‘mobile‘];
                $data[$k][‘cantuan3_pay‘]=$sonList[3][‘mobile‘]?$sonList[3][‘pay_price‘]:‘‘;
                $data[$k][‘cantuan3_num‘]=$sonList[3][‘join_num‘];;
                $searchOrder=Db::name(‘tuan_list‘)->where([‘create_uid‘=>$v[‘create_uid‘],‘status‘=>2])->whereTime(‘begin_time‘, ‘<‘, $v[‘begin_time‘])->count();
                $data[$k][‘is_first‘]=$searchOrder?0:1;
                $data[$k][‘number‘]=$join_num;
                $seaMap[‘list.create_uid‘]=array(‘neq‘,$v[‘create_uid‘]);
                $seaMap[‘list.status‘]=array(‘eq‘,2);
                $seaMap[‘list.order_sn‘]=array(‘neq‘,$v[‘order_sn‘]);
                $seaMap[‘order.uid‘]=array(‘eq‘,$v[‘create_uid‘]);
                $searchJoinOrder=Db::name(‘tuan_order‘)->alias(‘order‘)->join(‘tuan_list list‘,‘order.parent_order=list.order_sn‘,‘left‘)->where($seaMap)->whereTime(‘order.insert_time‘, ‘<‘, $v[‘begin_time‘])->count();
                $data[$k][‘is_join‘]=$searchJoinOrder?1:0;
                //调用导出        $filename = "拼团订单列表".date(‘YmdHis‘);
            $header = array (‘活动发起人‘,‘所属美容师‘,‘所属门店编码‘,‘所属门店名称‘,‘所属办事处‘,‘拼购单号‘,‘拼购商品‘,‘商品总价‘,‘发起时间‘,‘成团时间‘,‘拼购状态‘,‘发起人支付金额‘,‘发起人手机号码‘,‘参团人1‘,‘手机号码‘,‘支付金额‘,‘参团人1拓客留客‘,‘参团人2‘,‘手机号码‘,‘支付金额‘,‘参团人2拓客留客‘,‘参团人3‘,‘手机号码‘,‘支付金额‘,‘参团人3拓客留客‘,‘发起人是否首次发起‘,‘参团人数‘,‘是否参加过拼团‘);
            $widths=array(‘15‘,‘20‘,‘20‘,‘30‘,‘30‘,‘30‘,‘60‘,‘10‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘,‘20‘);
            if($data) {
                excelExport($filename, $header, $data, $widths);//生成数据
        }

原文地址:https://www.cnblogs.com/houdj/p/9765547.html

时间: 2024-10-04 18:22:58

tp5 excel导出类的相关文章

asp.net(C#) Excel导出类 导出.xls文件

---恢复内容开始--- using Microsoft.Office.Interop.Excel; 针对office 2003需添加引用Microsoft   Excel   11.0   Object   Library 如添加之后还不能用再using microsoft.office.core和excel 引用的dll为 Interop.Microsoft.Office.Core.dll Interop.Excel.dll Excel导出类: using System; using Sys

.net core 基于NPOI 的excel导出类,支持自定义导出哪些字段

/// <summary> /// 导出Excel /// </summary> /// <param name="lists"></param> /// <param name="head">英文中文列名对照</param> /// <param name="workbookFile">保存路径</param> public static void

SXSSFWorkbook用于海量数据Excel导出类

public SXSSFWorkbook(XSSFWorkbook workbook) /* Construct a workbook from a template. 下列三种模式可以用此构造方法 There are three use-cases to use SXSSFWorkbook(XSSFWorkbook) : 追加sheet到已有XSSFWorkbook工作区后 Append new sheets to existing workbooks. You can open existi

springMVC实现excel导出(简单封装版)

数据model,此model只存在getXXX和setXXX方法,不存在isXXX方法. /**  * Created by lgq on 2015/8/13.  */ public class Student {     private long id;     private String name;     private int age;     private boolean sex;     private Date birthday;     public long getId()

TP5.0源生Excel导出

PHPExcel类在TP5里边并不能很好的兼容,使用起来很麻烦. 不像是tp3.2那样直接import()加进来就能new,因为它里边的命名空间找不到.总是说undefined class. 如果是使用composer安装的PHPExcel的话可能好点吧. 因为我是下载下来后直接放到extend里边使用的,感觉不是很好用. 所以为了方便直接写的源生的导出. tp5在更新了一次之后说明文档上标明,如果能够不使用DB类的情况下不要使用DB类,尽量使用模型进行CURD操作. 但是如果用源生的php代码

javaEE开发之导出excel工具类

web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import o

偷懒小工具 - Excel导出公共类

说明 最近接了一个任务,就是做一个列表的Excel导出功能.并且有很多页面都会使用这个功能. 导出的Excel大体格式如图 很简单的列表,标题加背景色,然后不同类型,显示方式不一样.对齐方式不一样.不同页面除了内容以外,大体形式都差不多. 当时本来是想直接用NPOI,IRow ICell.这样进行拼接页面,最简单也最方便. 但是很多页面,都进行这种类似的设计.我实在是懒得做这种重复功能.所以花了一点时间,整理了一下帮助类. 使用 做好这个帮助类以后只要进行两点调用 1.制作导出Excel的数据模

(Excel导出失败)检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失

在DCOM 中不存在WORD.EXCEL等OFFICE组件 最近在做一个关于office转存PDF的Web项目.开发过程一切顺利. 起初在网上找到一些Word,PPT转PDF的代码.很好用.一切顺利项目开发成功.在这里需要说明一点,PPT中会存在流媒体内容,如果存在这些内容的时候是不能成功转换为PDF的.需要手动将相关内容删除后才可以转换.各位如果遇到些奇怪的问题的时候,希望检查下PPT中是不是存在这些内容. 项目开发结束,问题就来了.因为需要搭建测试环境.就拿手边一台防止的机器搭建了测试环境.

.NET开发工具之Excel导出公共类

最近接了一个任务,就是做一个列表的Excel导出功能.并且有很多页面都会使用这个功能. 导出的Excel大体格式如图 很简单的列表,标题加背景色,然后不同类型,显示方式不一样.对齐方式不一样.不同页面除了内容以外,大体形式都差不多. 当时本来是想直接用NPOI,IRow ICell.这样进行拼接页面,最简单也最方便. 但是很多页面,都进行这种类似的设计.我实在是懒得做这种重复功能.所以花了一点时间,整理了一下帮助类. 使用 做好这个帮助类以后只要进行两点调用 1.制作导出Excel的数据模型.这