当前位置:   article > 正文

php excel导出数据合并,ThinkPHP 整合 PHPExcel ,数据导出功能实现,解决Invalid cell coordinate...

invalid cell coordinate

PHPExcel想必大家都不陌生,是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格

本次只做数据导出功能的实现,而且我也只做了数据导出(  ̄ー ̄)!

废话少说

1. 导入类库

将下载下来的包解压:PHPExcel_1.8.0_doc.zip\Classes下面的文件就是我们需要的

ThinkPHP第三方类需要放在/ThinkPHP/Library/Vendor下面,新建一个文件夹PHPExcel,将需要的类放进去

2. 工具类

我在Application目录下新建个模块Lib,用于存放公共的工具类

新建文件 ExcelOperation.class.php

代码如下:有需要的可以自己扩展

17.04.22-更新:解决表头超过26列报错:Invalid cell coordinate

这种错误主要是表头AA,AB,AC...,ord()转换问题

/**

* PHPExcel

* Created by dbn

* Date: 2016/12/15

*/

namespace Lib;

class ExcelOperation

{

public function __construct()

{

vendor('PHPExcel.PHPExcel');

vendor('PHPExcel.PHPExcel.IOFactory');

vendor('PHPExcel.PHPExcel.Writer.Excel5');

vendor('PHPExcel.PHPExcel.Writer.Excel2007');

}

/**

* 数据导出

* @param string $fileName 文件名

* @param array $headArr 表头数据(一维)

* @param array $data 列表数据(二维)

* @param int $width 列宽

* @return bool

*/

public function push($fileName="", $headArr=array(), $data=array(), $width=20)

{

if (empty($headArr) && !is_array($headArr) && empty($data) && !is_array($data)) {

return false;

}

$date = date("YmdHis",time());

$fileName .= "_{$date}.xls";

$objPHPExcel = new \PHPExcel();

//设置表头

$tem_key = "A";

foreach($headArr as $v){

if (strlen($tem_key) > 1) {

$arr_key = str_split($tem_key);

$colum = '';

foreach ($arr_key as $ke=>$va) {

$colum .= chr(ord($va));

}

} else {

$key = ord($tem_key);

$colum = chr($key);

}

$objPHPExcel->getActiveSheet()->getColumnDimension($colum)->setWidth($width); // 列宽

$objPHPExcel->getActiveSheet()->getStyle($colum)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // 垂直居中

$objPHPExcel->getActiveSheet()->getStyle($colum.'1')->getFont()->setBold(true); // 字体加粗

$objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);

$tem_key++;

}

$objActSheet = $objPHPExcel->getActiveSheet();

$border_end = 'A1'; // 边框结束位置初始化

// 写入内容

$column = 2;

foreach($data as $key => $rows){ //获取一行数据

$tem_span = "A";

foreach($rows as $keyName=>$value){// 写入一行数据

if (strlen($tem_span) > 1) {

$arr_span = str_split($tem_span);

$j = '';

foreach ($arr_span as $ke=>$va) {

$j .= chr(ord($va));

}

} else {

$span = ord($tem_span);

$j = chr($span);

}

$objActSheet->setCellValue($j.$column, $value);

$border_end = $j.$column;

$tem_span++;

}

$column++;

}

$objActSheet->getStyle("A1:".$border_end)->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN); // 设置边框

$fileName = iconv("utf-8", "gb2312", $fileName);

//重命名表

//$objPHPExcel->getActiveSheet()->setTitle('test');

//设置活动单指数到第一个表

$objPHPExcel->setActiveSheetIndex(0);

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'); //文件通过浏览器下载

exit;

}

}

PHPExcel在绘制样式时会做大量的时间,当数据量过大时,大家要有个取舍!

注:表头和内容顺序一定要对应上

thinkPHP中phpexcel的导出功能

public function wExcel() { vendor("PHPExcel.PHPExcel"); // Create new PHPExcel object $obj ...

PHPexcel数据导出

使用PHPexcel数据导出,可以从网上下载phpexcel引入使用,下面是我做的简单的数据导出练习 一.下载phpexcel 二.引发这个导出(我这里是写了一个简单的点击事件)

ThinkPHP5使用PHPExcel实现数据导出功能

1.将PHPExcel类库文件夹放入extend目录下 2.导出功能实现 public function download(){ if(request()->isPost()){ $val = ...

PHPExcel导出数据时字段超过26列出错Invalid cell coordinate [1

http://blog.csdn.net/dl425134845/article/details/46650961 以下是解决方案函数 /** *   方法名:    getExcel *   作用  ...

jxl写入excel实现数据导出功能

@RequestMapping(params = "method=export", method = RequestMethod.GET) public void exportCo ...

phpexcel: 数据导出

// 设置列名最多40个 $cols = array( "A", "B", "C", "D", "E" ...

封装Excls数据导出功能 返回一个下载链接地址

/// /// 获取本地存储地址 /// ///

[转载]ecshop 实现订单导出功能 指定订单导出 EXCEL 数据文件

当下很多功能都觉得理所当然,但是实际作为2012年停更的ECSHOP来说,很多功能其实都是缺少的,好比今天的要说的功能 订单导出 这个功能对于现在的产品设计来说,应该属于一个比较常规的功能,但是ECS ...

thinkphp整合系列之phpexcel生成生成excel文件

在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...

随机推荐

Android—android与js交互以及相互传参

Android中可以通过WebView来实现与js的交互,让用户可以在android客户端看到js写的页面,接下来为大家介绍的就是怎样实现此功能: 首先android项目目录下有“assets”文件夹 ...

windows API 创建临时文件

创建完临时文件后,即可用C\C++标准函数写入.读取,也可以用API.MFC方法来操作. TCHAR szPathName[MAX_PATH]; TCHAR szFileName[MAX_PATH]; ...

将mac上的项目上传到oschina,进行代码托管。

1.首先看一下自己是否有公钥, 在 我的资料-->SSH公钥  查看,如果没有,添加自己的SSH 公钥: SSH key 可以让你在你的电脑和 Git @ OSC 之间建立安全的加密连接. 2. ...

GDB 修改当前判断函数的返回值(即修改寄存器的值)的方法

工作中遇到的问题: 在GDB调试时要进入下边该判断后边的函数,而m_EtherDecode.Chk_MakeSure_IP_Pkt(pPacket,dwPacketLen)的返回值是false,所以需 ...

ogistic regression (逻辑回归) 概述

:http://hi.baidu.com/hehehehello/blog/item/0b59cd803bf15ece9023d96e.html#send http://en.wikipedia.or ...

软件工程随堂小作业——随机四则运算Ⅱ之算法思路(C++)

1.题目避免重复: (1)利用系统时间来产生随机数,重复率会降低. (2)建立链表,逐个判断.可读取写入文件. 2.可定制(数量/打印方式): (1)格式有默认值; (2)可以选择重新设置分几列和每行 ...

Bash debug

Debugging bash scripts Bash can help us to find problems in bash scripts in some ways. You don't exp ...

Eclipse选项卡式的属性视图(The Eclipse Tabbed Properties View)

Eclipse工作台提供了一个性能视图用于查看(和/或编辑)选定项目的属性. 在本文中,您将学习怎样使用选项卡式的属性视图创建一个性能增强的用户界面视图. 1.引言 Eclipse工作台提供了一个属性 ...

java socket 多线程网络传输多个文件

http://blog.csdn.net/njchenyi/article/details/9072845 java socket 多线程网络传输多个文件 2013-06-10 21:26 3596人 ...

js和jquery设置disabled属性为true使按钮失效

设置disabled属性为true即为不可用状态. JS: document.getElementByIdx("btn").disabled=true;   Jquery: $(& ...

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/480931
推荐阅读
相关标签
  

闽ICP备14008679号