最近有个项目需要将数据导出成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. SQL基本操作——case end

    case end进行多条件的判断 --查看Person表 select * from Person --对math字段进行条件判断 select name,数学成绩= case then '优' th ...

  2. 扩增子图表解读6韦恩图:比较组间共有和特有OTU或分类单元

    韦恩图 Venn Diagram Venn Diagram,也称韦恩图.维恩图.文氏图,用于显示元素集合重叠区域的图示.   韦图绘制工具 常用R语言的VennDiagram包绘制,输出PDF格式方便 ...

  3. 换个语言学一下 Golang (4)——变量与常量

    一.变量定义 所谓的变量就是一个拥有指定名称和类型的数据存储位置. //看一个例子 package main import ( "fmt" ) func main() { var ...

  4. emacs 定制进缩风格

    纵览 emacs 文档中描述,进缩风格实现只需要两步:第一步,根据内容与上下文找到对应的进缩风格的类别:第二步,依据进缩风格决定的表达式锚点的进缩偏移.下面我们对 cc-mode 风格定制加以说明. ...

  5. BZOJ 1051 HAOI 2006 受欢迎的牛

    [题解] 先用tarjan缩点,然后如果某个强联通分量的出度为0,则该强联通分量内的点数为答案,否则无解.因为若其他所有的强联通分量都有边连向Ai,则Ai必定没有出边,否则Ai连向的点所属的强联通分量 ...

  6. web开发如何使用百度地图API(一)判断点是否在范围内

    准备工作 注册开发者 创建应用 拿到百度地图ak 前端实现方案 引入百度地图API和工具类库 <script type="text/javascript" src=" ...

  7. 重庆OI2017 小 Q 的棋盘

    小 Q 的棋盘 时间限制: 1 Sec  内存限制: 512 MB 题目描述 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能在有连线的格点之间移 ...

  8. 清北学堂模拟赛d4t5 b

    分析:一眼树形dp题,就是不会写QAQ.树形dp嘛,定义状态肯定有一维是以i为根的子树,其实这道题只需要这一维就可以了.设f[i]为以i为根的子树中的权值和.先处理子树内部的情况,用一个数组son[i ...

  9. 最小生成树prime算法模板

    #include<stdio.h> #include<string.h> using namespace std; int map[505][505]; int v, e; i ...

  10. hdu_1014_Uniform Generator_201310141958

    Uniform Generator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...