最近有个项目需要将数据导出成excel,以前都没接触过。便google一下知道了PHPExcel 这个据说很强大的类库。

写这个博文主要目的等同于做笔记

1首先看了下官方的文档。http://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Home 

ini_set("include_path",ini_get("include_path").";../Classes");

这个是需要改动的,因为我的系统是linux,根目录是/usr/share/nginx/www 所以改成  set_include_path(get_include_path.PATH_SEPARATOR.$_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."Classes");

其中 PATH_SEPARATOR 是一个常量,在linux中是 ‘:’,在windows中是‘;’ 因为系统环境变量的分割符不一样所以最好还是使用这个常量。

而 DIRECTORY_SEPARATOR 也是一个常量,他表示的系统文件夹分割符号。使用理由同上。

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

引入类文件 我这个是2007版的,还有Excel5等,主要参考 PHPExcel/Writer/ 中的类文件,

// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object<br />";
$objPHPExcel = new PHPExcel();

实例化 类

设置 表的一些基本属性

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");   创造者
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); 最后修改
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");  标题
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); 主题
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); 简介

//添加内容

$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');

这里的添加是按照  行号和列号来进行内容添加的

// 重命名当前工作的表名
echo date('H:i:s') . " Rename sheet<br />";
$objPHPExcel->getActiveSheet()->setTitle('Simple');

//保存文件

// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format<br />";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('excel_'.str_replace('.php', '.xlsx', __FILE__));

以下是来自网络的资源

  1. //显式指定内容类型
  2. $objActSheet->setCellValueExplicit('A5', '847475847857487584',
  3. PHPExcel_Cell_DataType::TYPE_STRING);
  4. //合并单元格
  5. $objActSheet->mergeCells('B1:C22');
  6. //分离单元格
  7. $objActSheet->unmergeCells('B1:C22');
  8. //*************************************
  9. //设置单元格样式
  10. //
  11. //设置宽度
  12. $objActSheet->getColumnDimension('B')->setAutoSize(true);
  13. $objActSheet->getColumnDimension('A')->setWidth(30);
  14. $objStyleA5 = $objActSheet->getStyle('A5');
  15. //设置单元格内容的数字格式。
  16. //
  17. //如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
  18. //这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的
  19. //各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
  20. //为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要
  21. //修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,
  22. //在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
  23. //行代码:
  24. //if($ifmt === '0') $ifmt = 1;
  25. //
  26. //设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
  27. //被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
  28. //都按原始内容全部显示出来。
  29. $objStyleA5
  30. ->getNumberFormat()
  31. ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
  32. //设置字体
  33. $objFontA5 = $objStyleA5->getFont();
  34. $objFontA5->setName('Courier New');
  35. $objFontA5->setSize(10);
  36. $objFontA5->setBold(true);
  37. $objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
  38. $objFontA5->getColor()->setARGB('FF999999');
  39. //设置对齐方式
  40. $objAlignA5 = $objStyleA5->getAlignment();
  41. $objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
  42. $objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
  43. //设置边框
  44. $objBorderA5 = $objStyleA5->getBorders();
  45. $objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  46. $objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
  47. $objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  48. $objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  49. $objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  50. //设置填充颜色
  51. $objFillA5 = $objStyleA5->getFill();
  52. $objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  53. $objFillA5->getStartColor()->setARGB('FFEEEEEE');
  54. //从指定的单元格复制样式信息.
  55. $objActSheet->duplicateStyle($objStyleA5, 'B1:C22');
  56. //*************************************
  57. //添加图片
  58. $objDrawing = new PHPExcel_Worksheet_Drawing();
  59. $objDrawing->setName('ZealImg');
  60. $objDrawing->setDescription('Image inserted by Zeal');
  61. $objDrawing->setPath('./zeali.net.logo.gif');
  62. $objDrawing->setHeight(36);
  63. $objDrawing->setCoordinates('C23');
  64. $objDrawing->setOffsetX(10);
  65. $objDrawing->setRotation(15);
  66. $objDrawing->getShadow()->setVisible(true);
  67. $objDrawing->getShadow()->setDirection(36);
  68. $objDrawing->setWorksheet($objActSheet);
  69. //添加一个新的worksheet
  70. $objExcel->createSheet();
  71. $objExcel->getSheet(1)->setTitle('测试2');
  72. //保护单元格
  73. $objExcel->getSheet(1)->getProtection()->setSheet(true);
  74. $objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');

原文链接 http://www.zeali.net/entry/556

PHPExcel 使用心得的更多相关文章

  1. PHPExcel使用体会

    PHPExcel使用体会 因为毕设导师智能分配系统的需要,系负责人在管理学生和导师时,希望可以使用Excel批量导入学生和导师的信息,学长的报课系统使用的是PHPExcel的类库,于是我也抽空花了2天 ...

  2. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  3. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

  4. phpexcel读取输出操作

    //读取 <?php header("Content-Type:text/html;charset=utf-8"); include 'Classes/PHPExcel.ph ...

  5. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  8. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  9. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. Showplan 逻辑运算符和物理运算符参考

    本文档已存档,并且将不进行维护. 运算符说明了 SQL Server 如何执行查询或数据操作语言 (DML) 语句. 查询优化器使用运算符生成查询计划,以创建在查询中指定的结果或执行在 DML 语句中 ...

  2. 【译】x86程序员手册19-6.3.2数据访问的约束

    6.3.2 Restricting Access to Data  数据访问的约束 To address operands in memory, an 80386 program must load ...

  3. (转) Arcgis for Javascript实现两个地图的联动

    http://blog.csdn.net/gisshixisheng/article/details/40127895 今天在看天地图的时候,有一个多时相的地图显示功能,感觉很好玩,作为技术控的我晚上 ...

  4. c#遍历注册表

    --来自 https://blog.csdn.net/wenchangren/article/details/751863using System; using Microsoft.Win32; us ...

  5. eclipse版本和jdk的版本兼容问题

    eclipse也是有版本的,当版本过低时,无法兼容高版本的jdk 项目中用的是jdk1.8,但是低版本的eclipse只能选到jdk1.7,导致java文件在编译的过程中,不识别1.8版本jdk的语法 ...

  6. Python 模块的导入 day5

    一.模块 1.标准模块 python自带的 2.第三方模块 需要自己安装的模块 3.自己写的python文件 一个python文件,就是一个模块 (1)导入模块的实质 就是把你导入的模块运行了一遍 ( ...

  7. Python学习【第3篇】:Python之运算符

    一.运算符 计算机可以进行的运算有很多种,不只是加减乘除,它和我们人脑一样,也可以做很多运算. 种类:算术运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算,今天我们先了解前四个. 算术运 ...

  8. Linux的安装教程

    CentOS 6 + VMWare: 资源:https://pan.baidu.com/s/1AA4gaMpaoVaMor-tRU-n7A  提取码:6e8r    ( 内附 VMWare 14 激活 ...

  9. java归并排序

    代码如下: public class MergeSort { public static void mergeSort(DataWrap [] data) { sort(data , 0 , data ...

  10. discuz 微社区开通

    检测api: http://wsq.discuz.com/?a=apitest