• 最近要求做增加客流数据等导出为Excel的功能,phpExcel包功能强大,根据实际需求,我只学习了简单的功能。

安装PHPExcel

在composer.json中添加:

"require": {

"phpoffice/phpexcel": "1.8.1"

},

安装完毕,在vendor中出现一个phpoffice包。

使用

        $objPHPExcel = new \PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()
->setCellValue("A1", '门店名称')
->setCellValue("B1", '店长')
->setCellValue("A2", '我的门店')
->setCellValue("B2", 'www'); header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="store.xls"');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
$objPHPExcel->disconnectWorksheets();
  • 增加header头,则会直接下载一个Excel表格到本地,exce列为大写的A,B...,行为数字1,2,3...,不断地拓展。

如果觉得一个个的麻烦可以使用一个php数组导入:

        $objPHPExcel = new \PHPExcel();
$objPHPExcel->setActiveSheetIndex(0); $dataArray = array(
array('111' => "2016", '222' => "1000", '33aa' => "1000", 200),
array("2010", "Q2", "www", 100),
array("2010", "Q2", "www", 100),
array("2010", "Q2", "www", 100),
array("2010", "Q2", "www", 100),
);
// 或者hash也是可以的,只是插入的Excel的时候,过滤掉key
// $dataArray = array(
// '11'=> array('111' => "2116", '222' => "1000", '33aa' => "1000", 200),
// '22'=> array("2010", "Q2", "www", 100),
// array("2010", "Q2", "www", 100),
// array("2010", "Q2", "www", 100),
// array("2010", "Q2", "www", 100),
// );
$objPHPExcel->getActiveSheet()->fromArray($dataArray, null, 'A1');
$objPHPExcel->getActiveSheet()
->setCellValue("E2", '=SUM(A1:C1)/3');
  • 可以将数组导入,关联数组也可以,只是将值导入,同时可以计算结果导入对应的表格。

  • 单元格计算,例如:setCellValue("E2", '=SUM(A1:C1)/3'),试讲A1,B1,C1相加除以3所得结果放入E2表格。

  • 输出,通过header头,下载Excel文件

        header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="filename.xls"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header('Expires: Mon, 26 Jul 1997$hourValueGMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
$objPHPExcel->disconnectWorksheets();

其他的有用的方法:

  • 获取行列等
        $Column = $objPHPExcel->getActiveSheet()
->getCell('B2')->getColumn();
$Row = $objPHPExcel->getActiveSheet()
->getCell('B2')->getRow();
$Value = $objPHPExcel->getActiveSheet()
->getCell('B2')->getValue();

以上分别可以得到相应的列,行,和表格对应的值,但如果单元格里面放的公式,则返回时公式,而非结果,如上,获取E2则返回结果SUM(A1:C1)/3

  • 合并单元格
    $objPHPExcel->getActiveSheet()->mergeCells("A1:A3"); //将A列的1,2,3行合并为一行

  • 增加样式
        $objPHPExcel->getActiveSheet()->getStyle( 'A1:' . $lineIndex . '1')->getFont()->setBold(true);  //加粗
$objPHPExcel->getActiveSheet()->getStyle( 'A1:' . $lineIndex . '1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID); // 背景填充方式
$objPHPExcel->getActiveSheet()->getStyle( 'A1:' . $lineIndex . '1')->getFill()->getStartColor()->setARGB('B0C4DE'); //加颜色
  • 数组方式
     * <code>
* $objPHPExcel->getActiveSheet()->getStyle('B2')->applyFromArray(
* array(
* 'font' => array(
* 'name' => 'Arial',
* 'bold' => true,
* 'italic' => false,
* 'underline' => PHPExcel_Style_Font::UNDERLINE_DOUBLE,
* 'strike' => false,
* 'color' => array(
* 'rgb' => '808080'
* )
* ),
* 'borders' => array(
* 'bottom' => array(
* 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
* 'color' => array(
* 'rgb' => '808080'
* )
* ),
* 'top' => array(
* 'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
* 'color' => array(
* 'rgb' => '808080'
* )
* )
* ),
* 'quotePrefix' => true
* )

假如列大于Z,可以通过这个方法转化为对应AA,AB等,从0开始。

    private function stringFromColumnIndex($pColumnIndex = 0)
{
static $_indexCache = array(); if (!isset($_indexCache[$pColumnIndex])) {
if ($pColumnIndex < 26) {
$_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex);
} elseif ($pColumnIndex < 702) {
$_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) . chr(65 + $pColumnIndex % 26);
} else {
$_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex - 26) / 676)) . chr(65 + ((($pColumnIndex - 26) % 676) / 26)) . chr(65 + $pColumnIndex % 26);
}
}
return $_indexCache[$pColumnIndex];
}
        foreach ($mergeArray as $singleMergeArray) {
$objPHPExcel->getActiveSheet()->mergeCells("A$singleMergeArray[0]:A$singleMergeArray[1]");
$objPHPExcel->getActiveSheet()->getStyle("A$singleMergeArray[0]:A$singleMergeArray[1]")->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
if (($singleMergeArray[1] - $singleMergeArray[0]) > 2) {
$lastMergeIndex = $singleMergeArray[1] - 2;
$objPHPExcel->getActiveSheet()->mergeCells("D$singleMergeArray[0]:D$lastMergeIndex");
$objPHPExcel->getActiveSheet()->getStyle("D$singleMergeArray[0]:D$lastMergeIndex")->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
}
}

使用PHPExcel导出数据的更多相关文章

  1. php利用phpexcel导出数据

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

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

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

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

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

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

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

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

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

  6. phpexcel导出数据表格

    1.下载phpexcel(李昌辉) 2.在页面引入phpexcel的类文件,并且造该类的对象 include("../chajian/phpexcel/Classes/PHPExcel.ph ...

  7. thinkphp中使用PHPEXCEL导出数据

    thinkphp中导出二维数组到Excel 1.解决时间长度导致EXCEL出现###问题 2.解决长数值型 带来的科学记数法导出问题 订单号不再变为科学记数法 而是直接字符串类型 代码如下: < ...

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

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

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

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

随机推荐

  1. MySQL中TIMESTAMP和DATETIME区别

    1.两者的存储方式不一样 TIMESTAMP:把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储.查询时,将其又转化为客户端当前时区进行返回. DATETIME:不做任何改变,基本上是原 ...

  2. php5.2通过saprfc扩展远程连接sap730成功案例

    公司刚上sap系统,由于资金有限,sap与其它系统的数据交换需要公司内部实现.于是,领导决定入库申请流程需要在sap与OA系统里实现电子签核流,重担果然落到我的身上.好在我只负责OA,还一位同事负责s ...

  3. Session深入理解

    Session是在什么情况下产生的 客户端访问服务器端,服务器端为每个用户生成一个唯一的sessionId,是这样吗?sessionId的作用是什么? http://www.cnblogs.com/s ...

  4. tinkphp URL重写,支持伪静态

    通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持 ...

  5. JNI type

    ref: JNI type The mapping between the Java type and C type is: Type Signature Java Type Z boolean B ...

  6. 利用Range改变光标位置

    先上代码,代码取自网上某插件中 function caret(begin, end) { if (this.length == 0) return; if (typeof begin == 'numb ...

  7. Mysql软删除

    所谓软删除(Soft Deleting),即在删除数据表中的数据时,并不直接将其从数据表中删除,而是将其标志为删除,即在每张表中设置一个删除字段(如:IsDeleted)等,默认情况下其值为0,及未删 ...

  8. hibernate_validator_07

    一.校验组序列 默认情况下,约束的验证是没有一定的顺序的,不管他们是属于哪个认证组的.但是在有些环境中,我们控制这些约束验证的顺序还是很有用的. 就拿我们上一个例子来说,我们可以这样:首先在我们检查车 ...

  9. jquery工具函数browser() 辨别浏览器

    1.browser属性不是一个函数是一个全局对象,可以辨别客户端浏览器. 2.属性1:$.browser.msie如果返回true则客户端浏览器是ie.相似的$.browser.safari返回tru ...

  10. 深入Java虚拟机读书笔记第二章平台无关性

    Java的体系结构对平台无关的支持 Java平台 Java的体系结构通过几种途径支持Java程序的平台无关性,其中主要是通过Java平台自己.Java平台扮演一个运行时Java程序与其下的硬件和操作系 ...