php生成excel文件_withstartrow false 不生效-程序员宅基地

技术标签: excel  PHP  php  

用的PHPExcel插件
github地址
下载后,Examples文件夹里面有各种示例代码,包括下载,生成表格、图形等

<?php 
/**
 * @param $list 要导出的数据,二维数组
 * @param $header   表头
 * @param $fields   导出数据的字段列表
 * @param string $filename  导出文件的名称
 * @param bool $excel2007   excel类型
 * @return array
 * @throws PHPExcel_Exception
 * @throws PHPExcel_Writer_Exception
 */
function createExcel($list, $header, $fields, $filename = "test", $excel2007 = true)
{
    
    require_once '../util/PHPExcel/PHPExcel.php';
    require_once '../util/PHPExcel/PHPExcel/Writer/Excel2007.php';
    ini_set('memory_limit', '2048M');

    if (!is_array($header)) {
    
        return ['code' => 10000, 'msg' => '表头必须是数组'];
    }
    if (!is_array($fields)) {
    
        return ['code' => 10001, 'msg' => '数据字段必须是数组'];
    }

    $startRow = 1;
    $header_arr = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
    //初始化PHPExcel()
    $objPHPExcel = new PHPExcel();

    //设置保存版本格式
    if ($excel2007) {
    
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
        $filename = $filename . '.xlsx';
    } else {
    
        $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
        $filename = $filename . '.xls';
    }

    $objActSheet = $objPHPExcel->getActiveSheet();
    // 设置表头内容
    foreach ($header as $key => $name) {
    
        $objActSheet->setCellValue($header_arr[$key] . $startRow, $name);
    }
    $startRow++;

    // 设置每一行内容
    foreach ($list as $row) {
    
        foreach ($fields as $key => $field) {
    
            //设置单元格的内容
            $objActSheet->setCellValue($header_arr[$key] . $startRow, $row[$field]);
        }
        $startRow++;
    }

    // 写文件
    $dir = "./";
    if (!is_dir($dir)) {
    
        mkdir($dir, 0755, true);
    }
    // 检查目录是否可写
    if (is_writeable($dir) === false) {
    
        return ['code' => 10002, 'msg' => '目录不可写'];
    }
    $execlFilePath = $dir . $filename;
    $objWriter->save($execlFilePath);
    return ['code' => 0, 'msg' => 'ok'];
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_21707807/article/details/103761153

智能推荐

echarts图表的使用及用法-程序员宅基地

文章浏览阅读5.2k次。一、介绍ECharts,一个纯 Javascript 的图表库,可以流畅的运行在PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。ECharts 提供了常规的折线图,柱状图,散点图,饼图,K线图,用于统计的盒形图,用于地理数据可视化的地图,热力图,线图,用于关系数据可视化的关系图,treemap,多维数据可视化的平行坐标,还_echarts图表

容器平台选型的十大模式:Docker、DC/OS、K8S 谁与当先?_开源容器平台-程序员宅基地

文章浏览阅读1.2k次。本文由 网易云 发布作者:刘超 来自:网易云基础服务无论是在社区,还是在同客户交流的过程中,总会被问到到底什么时候该用 Docker?什么时候用虚拟机?如果使用容器,应该使用哪个容器平台? 显而易见,我不会直接给大家一个答案,而是希望从技术角度进行分析具体的场景。例如客户是大公司还是小公司,将部署小集群还是大集群,倾向于私有云还是公有云,已经采购了 IaaS 还是没有 IaaS,IT 运维能力..._开源容器平台

Spring MVC 入门(十)Spring MVC 的文件上传和下载_private multipartfile logoimage;-程序员宅基地

文章浏览阅读171次。10.1 文件上传 文件上传是项目开发中最常用的功能。为了实现上传文件,必须将表单的 method 设置为 POST,并将 enctype 设置为 multipart/form-data。这样,浏览器才会把用户选择的文件二进制数据发送给服务器。 设置 enctype 为 multipart/form-d..._private multipartfile logoimage;

bash 脚本中嵌入 expect_bash expect-程序员宅基地

文章浏览阅读7.6k次。在 Ubuntu Terminal\text{Ubuntu Terminal}Ubuntu Terminal 中执行一些命令时总是需要交互式的输入信息,如 Y/N/passwd\text{Y/N/passwd}Y/N/passwd 等等,这可以起到提醒用户的作用,也更加保险。但是有的时候在执行自动化脚本时并不希望一直进行交互式的操作,所以 expect\text{expect}..._bash expect

java多线程总结六:经典生产者消费者问题实现-程序员宅基地

文章浏览阅读56次。这是个线程同步的经典例子,源代码如下:[java]view plaincopy<spanstyle="font-size:16px;">packagedemo.thread;/***经典生产者与消费者问题:生产者不断的往仓库中存放产品,消费者从仓库中消费产品。*其中生产者和消费者都可以有若干个。仓库容量有限,库..._5)仓库中每次只能入一人(生产者或消费者)。 6)仓库中可存放产品的数量最多5个。 7

AB实验样本量确定_abtest最小样本量确定-程序员宅基地

文章浏览阅读1.3w次,点赞10次,收藏93次。文章目录1. 统计功效与关键概念2. Z检验样本量确定2.1 统计功效公式推导2.2 样本量计算公式2.3 求解样本量3. 卡方检验样本量确定3.1 求解样本量4. 简要总结Reference在数据分析过程中,一个完整的闭环是从数据中得到洞察,根据洞察得到某种假设,通过实验检验这一假设。AB实验实际上是在做一个假设检验,可以参考上一篇笔记【概率论】- (2)假设检验,在查资料的过程中,主要有两..._abtest最小样本量确定

随便推点

使用labelme制作自己的语义分割数据集_使用labelme训练自己的语义分割流程-程序员宅基地

文章浏览阅读1.4k次,点赞2次,收藏24次。安装labelme在cmd中激活我们使用的python环境,然后使用pip命令安装labelme,命令如下:pip install labelme==3.16.7注意:如果安装最新版本的 labelme,就无须指定版本号(3.16.7就是版本号)打开labelme在cmd中激活我们使用的python环境,然后使用下面的命令,就可以打开labelme软件:labelme界面如下图:使用labelme对数据集进行标注标注之前我们可以先设置一下自动保存:file——>Sav_使用labelme训练自己的语义分割流程

跟随小破站学习java web第十五天_小破站的学习陪伴-程序员宅基地

文章浏览阅读262次。file_upload.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><h..._小破站的学习陪伴

java解析定长文件入库_java-当直到运行时才知道记录布局时,使用哪种方法来解析具有固定长度记录的文件?...-程序员宅基地

文章浏览阅读392次。我想基于另一个文件中提供的记录布局来解析文件.基本上会有一个定义文件,它是一个用逗号分隔的字段及其各自长度的列表.其中会有很多,每次我运行程序时都会加载一个新的.firstName,text,20middleInitial,text,1lastName,text,20salary,number,10然后,我将显示一个带有提供的列标题的空白表,以及一个通过单击按钮或其他方式添加数据的选项-我尚未决定..._java 文本文件定长记录

week10限时大模拟_B -团队聚餐_s,vb不是在你那边可能在部门聚餐:u女包~、{k:↑二:、:-程序员宅基地

文章浏览阅读178次。B - 团队聚餐题目描述TA团队每周都会有很多任务,有的可以单独完成,有的则需要所有人聚到一起,开过会之后才能去做。但TA团队的每个成员都有各自的事情,找到所有人都有空的时间段并不是一件容易的事情。给出每位助教的各项事情的时间表,你的任务是找出所有可以用来开会的时间段。输入格式第一行一个数T(T≤100),表示数据组数。对于每组数据,第一行一个数m(2 ≤ m ≤ 20),表示TA..._s,vb不是在你那边可能在部门聚餐:u女包~、{k:↑二:、:

利用MyBatis来做多表查询_mapper localdatetime[] 为条件查询-程序员宅基地

文章浏览阅读830次。目录一对一查询一对多查询 动态SQL的使用 标签 标签 标签 先创建好查询方法以及方法实现:在数据库中,建立userinfo表和articleinfo表的关系(一篇文章对应一个作者):结果:可以看到并没有将user 信息查询出来,所以这样的查询方式不对。正确的操作方法如下: 结果: 在上面标签里面的user一定要和Articleinfo里面的user一致,不然就查询不到数据了先创建好查询方法以及方法实现:在数据库中,建立userinfo表_mapper localdatetime[] 为条件查询

git 拉取指定远程分支的内容_git 获取远程分支内容-程序员宅基地

文章浏览阅读455次。git 拉取指定远程分支的内容git clone -b ants [email protected]:Ants-double/CareerJava.gitgit clone -b 远程分支名 仓库地址参考: git 拉取指定的远程分支(三种方式)_git 获取远程分支内容

推荐文章

热门文章

相关标签