1,使用composer安装phpexcel包:

composer require phpoffice/phpexcel

2,在控制器中创建方法:

(1)使用PHPexcel扩展。代码如下

 /**
* 导出excel表格(默认格式)
*
* @param array $columName 第一行的列名称
* @param array $list 二维数组
* @param string $setTitle sheet名称
* @return
* @author Tggui <tggui@vip.qq.com>
*/
private function exportExcel1($columName, $list, $fileName='demo', $setTitle='Sheet1'){ vendor('phpoffice.phpexcel.Classes.PHPexcel');
vendor('phpoffice.phpexcel.Classes.PHPexcel.IOFactory'); if ( empty($columName) || empty($list) ) {
return '列名或者内容不能为空';
}
if ( count($list[0]) != count($columName) ) {
return '列名跟数据的列不一致';
}
$fileName = iconv("utf-8", "gb2312", $fileName);
//实例化PHPExcel类
$PHPExcel = new \PHPExcel();
//获得当前sheet对象
$PHPSheet = $PHPExcel -> getActiveSheet();
//定义sheet名称
$PHPSheet -> setTitle($setTitle); //excel的列 这么多够用了吧?不够自个加 AA AB AC ……
$letter = [
'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'
];
//把列名写入第1行 A1 B1 C1 ...
for ($i=0; $i < count($list[0]); $i++) {
//$letter[$i]1 = A1 B1 C1 $letter[$i] = 列1 列2 列3
$PHPSheet->setCellValue("$letter[$i]1","$columName[$i]");
}
//内容第2行开始
foreach ($list as $key => $val) {
//array_values 把一维数组的键转为0 1 2 3 ..
foreach (array_values($val) as $key2 => $val2) {
//$letter[$key2].($key+2) = A2 B2 C2 ……
$PHPSheet->setCellValue($letter[$key2].($key+2),$val2);
}
}
//生成2007版本的xlsx
$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,'Excel2007');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename='.$fileName.'.xlsx');
header('Cache-Control: max-age=0');
$PHPWriter->save("php://output");
exit;
}

2),自定义函数,不使用PHPexcel扩展。代码如下:

/**
* 导出excel表格
*
* @param array $columName 第一行的列名称
* @param array $list 二维数组
* @param string $setTitle sheet名称
* @return
* @author Tggui <tggui@vip.qq.com>
*/
public function exportExcel($columName, $data, $fileName='demo', $setTitle='Sheet1'){
$table = '<table border=1>';
if(!empty($columName) && is_array($columName)){
$table .= "<thead><tr>";
foreach($columName as $key=>$value){
$table .= "<th style='background:#badffb'>{$value}</th>";
}
$table .= "</tr></thead>";
}
$table .= "<tbody>";
if(!empty($data) && is_array($columName)){
foreach($data as $k=>$v){
$table .= "<tr>";
foreach($v as $vk=>$vv){
$table .= "<td>{$vv}</td>";
} $table .= "</tr>";
}
}
$table .= "</tbody></table>"; //通过header头控制输出excel表格
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename="'.$fileName.'.xls"');
header("Content-Transfer-Encoding:binary");
echo $table;
}
}

3,创建导出测试方法:

/**
* @method 导出测试方法
*/
public function connectOrder()
{
//连接数据库获取数据
$clt_db = Db::connect('clt_db');
$data = $clt_db->name('admin')
->field('username,extension,email,tel')
->select();
//第一行的列数据
$header = array('用户名', '工号', '邮箱', '电话号码'); //调用导出方法
self::exportExcel1($header, $data, date('Y-m-d'));
}

参考于:https://blog.csdn.net/dream__skyfly/article/details/85226194

tp5使用PHPexcel扩展导出excel表的更多相关文章

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

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

  2. thinkphp导入导出excel表单数据

    在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...

  3. 【ITOO 1】将List数据导出Excel表

    需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中.再进行判空处赋值处理,以及去重处理.这篇博客,主要介绍读取excel表和导出excel表的方法 ...

  4. ASP.NET导出excel表方法汇总

    asp.net里导出excel表方法汇总  1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...

  5. DateGridew导出Excel表+常见错误提示

    在敲机房收费系统的时候,显示数据的时候需要将DateGridew 中的数据导出进Excel表.DateGridew导出Excel表是比较常见的,当然导出Excel表有很多种方法,下面是个人认为比较容易 ...

  6. 使用PHPExcel导入导出excel格式文件

    使用PHPExcel导入导出excel格式文件  作者:zccst  因为导出使用较多,以下是导出实现过程.  第一步,将PHPExcel的源码拷贝到项目的lib下  文件包含:PHPExcel.ph ...

  7. 传参导出Excel表乱码问题解决方法

    业务场景 先描述一下业务场景,要实现的功能是通过搜索框填写参数,然后点击按钮搜索数据,将搜索框的查询参数获取,附加在链接后面,调导Excel表接口,然后实现导出Excel功能.其实做导Excel表功能 ...

  8. 前端导出excel表

    前端导出excel表 方式一: 前端js实现 : https://www.cnblogs.com/zhangym118/p/6235801.html 方式二: java后端实现: https://bl ...

  9. C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation

    C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...

随机推荐

  1. phpstorm+xmapp post不能传值

    https://blog.csdn.net/apple_wheat/article/details/72937035 问题的原因在于: PhpStorm默认使用的是自带的内部服务器,却不使用XAMPP ...

  2. UNIX读书笔记----UNIX基础知识

    UNIX体系结构: 从严格意义上讲,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们通常将这种软件称为内核(Kernel),因为他相对较小,而且位于环境的核心.图片显示了UNI ...

  3. finished with exit code -1073740791 (0xC0000409)解决方案

    1.在用keras框架跑NER的train时,而且只是在用了keras_contrib.layers的CRF时出现问题: 遇到无错跳出finished with exit code -10737407 ...

  4. Apache的那些事-查找配置文件

    在CentOS 6.5 里Apache的 安装后出现两个httpd.conf配置文件,一个在          /etc/httpd/conf/httpd.conf             这个事li ...

  5. Keras深度学习框架之损失函数

    一.损失函数的使用 损失函数[也称目标函数或优化评分函数]是编译模型时所需的两个参数之一. model.compile(loss='mean_squared_error', optimizer='sg ...

  6. el-menu 菜单展示

    <template> <div class="tab-container"> <el-menu class="el-menu-vertica ...

  7. Linux运维---1.磁盘相关知识

    一 磁盘物理结构 (1) 盘片:硬盘的盘体由多个盘片叠在一起构成. 在硬盘出厂时,由硬盘生产商完成了低级格式化(物理格式化),作用是将空白的盘片(Platter)划分为一个个同圆心.不同半径的磁道(T ...

  8. Elasticsearch之集群

    ElasticSearch集群 ES集群是一个 P2P类型(使用 gossip 协议)的分布式系统,除了集群状态管理以外,其他所有的请求都可以发送到集群内任意一台节点上,这个节点可以自己找到需要转发给 ...

  9. 关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答

    关于广州xx公司对驰骋BPM, 流程引擎表单引擎 常见问题解答 @驰骋工作流,ccflow周朋 周总早, ccflow 功能很强大,在体验过程中,以下几个问题需沟通下: 先使用.net 再使用java ...

  10. window 下如何恢复被删除的mysql root账户及密码(mysql 8.0.17)

    不久前自学完完sql,下了mysql8.0.17,安装配置好后探索着,想着用root账户登上去能不能删除root账户呢,然后就想给自己一巴掌,,, 如何快速恢复root: 1.关闭mysql服务:wi ...