thinkphp中导出二维数组到Excel

1.解决时间长度导致EXCEL出现###问题

2.解决长数值型 带来的科学记数法导出问题 订单号不再变为科学记数法 而是直接字符串类型

代码如下:

<?php
/**
* Author lizhaoyao
* Add_Time:2015-08-26
* [php_excel_export 用户导出Excel]
* @param array $data [含有表头的数组]
* @param string $file_name [要保存的文件名]
* @param string $sheet_name [工作表名称]
* @return [type] [返回Excel]
*/
function php_excel_export($data=array(),$file_name='',$sheet_name='导出记录')
{
if($file_name==""){$file_name=time();}//如果没有给名称 默认为当前时间戳
Vendor('Classes.PHPExcel');//导入扩展类
$objPHPExcel = new PHPExcel();//实例化PHPExcel
$data_key=array_keys($data);//取出二维数组的第一个元素
$keys_list=array_keys($data[$data_key[0]]);//取出二维数组第一个数组的所有key
//为什么这么做 为什么不用$data[0]? 因为该方法未知用户传入的data是何种数组 如果是关联数组 $data[0]将失效且报警告
/*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/
foreach($data as $k => $v)
{
$num=$k+1;//定义起始符
$middle_obj=$objPHPExcel->setActiveSheetIndex(0);//获取第一个工作表
$start_column='A';//定义起始列为A
foreach ($keys_list as $key => $value)
{
$objPHPExcel->getActiveSheet()->setCellValueExplicit($start_column.$num, $v[$value],PHPExcel_Cell_DataType::TYPE_STRING);//循环着给第几列赋值 并把长数值型变为文本型输出 解决导出形成科学记数法的瑕疵
//在excel中 列是以 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 AA AB AC AD AE AF……这样的形式增加的
//而字符串的增加正好符合这一规律 这也意味着 我们可以用字符串的自增来当作列
$objPHPExcel->getActiveSheet()->getColumnDimension($start_column)->setWidth(280);//设置每列宽度为280
$start_column++;//将列自增
}
}
$objPHPExcel->getActiveSheet()->setTitle($sheet_name);//设置sheet工作表名称
$objPHPExcel->setActiveSheetIndex(0);//设置表头
header('Content-Type: application/vnd.ms-excel');//输出头信息
header('Content-Disposition: attachment;filename="'.$file_name.'.xls"');//设置xls文件名称
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');//创建输出
$objWriter->save('php://output');exit();//保存输出到下载
}
?>

此方法用到字符串加加的形式 入A++变为B Z++变为AA的原理 需要深刻理解字符串自增才行

thinkphp中使用PHPEXCEL导出数据的更多相关文章

  1. thinkphp中使用PHPEXCEL导入数据

    导入方法比较简单 但必须考虑到Excel本身单元格格式问题 例如以0开头的字符串读出来被去掉了前导0 成为float型而丢失一位 必须进行处理 <?php /** * Author lizhao ...

  2. php利用phpexcel导出数据

    php中利用phpexcel导出数据的实现代码.对phpexcel类库不熟悉的朋友,可以阅读下<phpexcel中文帮助手册>中的内容,具体实例大家可以phpexcel快速开发指南中的相关 ...

  3. Thinkphp解决phpExcel导出数据量大导致内存溢出

    工作需要导出几万的数据量.操作比较频繁.之前数据在七八千是数据导出很慢.phpExcel是方便但是性能一般.现在改为使用csv导出数据:可以缓解内存压力,一次导出两三万是没问题的.当然服务器内存给力, ...

  4. 基于ThinkPHP开发的PHPExcel导出

    首先我们需要去PHPExcel官网下载开源包 下载好了以后只需要把里面的classes文件夹解压出来就可以用了! 在ThinkPHP中,文件的命名空间还是很重要的,我试着按照其他的第三方命名写name ...

  5. phpexcel导出数据 出现Formula Error的解决方案

    phpexcel导出数据报错 Uncaught exception 'Exception' with message 'Sheet1!A1364 -> Formula Error: Unexpe ...

  6. php 使用PHPExcel 导出数据为Excel

    <?php require_once 'PHPExcel/Classes/PHPExcel.php'; /** * 导出数据为Excel * @param array $fieldArr 标题数 ...

  7. PHPExcel 导出数据(xls或xlsx)- 助手类(函数)

    本文链接:https://www.cnblogs.com/tujia/p/11358096.html 说明:简单好用的导出助手,轻松导出数据到 excel !! 使用示例: Example: Exce ...

  8. PHP:引用PhpExcel导出数据到excel表格

    我使用的是tp3.2框架(下载地址:http://www.thinkphp.cn/topic/38123.html) 1.首先要下载PhpExcel类库,放在如下图目录下 2.调用方法 public ...

  9. Yii框架中使用PHPExcel导出Excel文件

    最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config\main.php中添加对PHPExcel的引用,我的方式是这样: 1 2 3 4 ...

随机推荐

  1. [Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟

    赌徒赢得机会有多大? public class Gambler { public static void main(String[] args) { // Run T experiments that ...

  2. 环状DNA序列

    大意: 一个DNA序列是环状的,这意味着有N个碱基的序列有N种表示方法(假设无重复).而这N个序列有一种最小的表示,这个最小表示的意思是这个序列的字典序最小(字典序的意思是在字典中的大小 比如ABC& ...

  3. 【elasticsearch】(2)centos7 超简单安装elasticsearch 的监控、测试的集群工具elasticsearch head

    elasticsearch-head是elasticsearch(下面称ES)比较普遍使用的可监控.测试等功能的集群管理工具,是由H5编写的单独的网页程序.使用方法网上很多,这里教大家一个超简单安装h ...

  4. Windows下配置g++的简单方法

    需要下载名为 Cygnus的软件.下载地址: http://www.claremontmckenna.edu/math/ALee/g++/full.exe 安装完成后配好环境变量就可以用gcc, g+ ...

  5. iOS:Swift界面实例1, 简单界面

    Apple推出了基于Objective-C的新语言Swift. 通过实例, 我们可以很好的感受这门新语言 注意事项: 在XCode6_Beta中, 如果有中文, IDE的自动补全功能就会失效, 所以开 ...

  6. 2016 Multi-University Training Contest 2 第一题Acperience

    Acperience Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Probl ...

  7. 当xcode里点运行出现treating unicode character as whites

    可能是由于粘贴网页上的代码的时候两行之间的回车引起的,两行之间重新输入回车就行......删掉重新写一遍就ok了 引入网页上的回车时  可能  网页对其格式做了处理,所以Xcode  不认识了

  8. 使用Style自定义ListView快速滑动图标

    一.显示ListView快速滑动块图标 设想这样一个场景,当ListView的内容有大于100页的情况下,如果想滑动到第80页,用手指滑动到指定位置,无疑是一件很费时的事情,如果想快速滑动到指定的位置 ...

  9. Contest 20140914 Mushroom写情书 字符串雙hash 後綴數組

    0111:Mushroom写情书 查看 提交 统计 提问 总时间限制:  10000ms 内存限制:  256000kB 描述 有一天,Mushroom准备向他的GF表白,为了增加表白成功率,Mush ...

  10. explain简介

    EXPLAIN显示了MySQL如何使用索引来处理SELECT语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上EXPLAIN就可以了: 如: EXPLA ...