http://blog.51cto.com/php2012web/1626907

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

PHPExcel是一个非常强大的PHP表格处理模块,提供一组PHP编程语言,它允许您编写和读取不同的电子表格文件格式,如Excel(纸)。 xls,Excel 2007(OfficeOpenXML)。 xlsx、CSV、自由/ OpenOffice Calc。ods, Gnumeric、PDF、HTML、… 这个项目是建立在微软的OpenXML标准

下载地址:http://phpexcel.codeplex.com/ 解压后在Examples目录下有很多的例子,Documentation目录下是相关文档(如果懂英文在里面的API目录下有更细的文档页面)


大部分情况下我们只用到了这个插件的字符导入导出功能。很多时候我们要导入导出链接,图片等。

PHPExcel中图片与文本是分开的,也就是在操作时间图片与文本各自独立添加到表格中去的,解析时同样要分两次把图片与文本读出来再合并,图片的也是有坐标的,其坐标是以图片的左上角为准


导入解析:

PHPExcel的导入解析功能非常强大,所支持的表格文件可以在PHPExcel/Reader/目录下查看,由于支持的表格文件多,所以在导入时很方便:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$excel =PHPExcel_IOFactory::load( "file.xlsx" ); //把导入的文件目录传入,系统会自动找到对应的解析类
$sheet = $excel ->getSheet(0); //选择第几个表,如下面图片,默认有三个表
$data = $sheet ->toArray(); //把表格的数据转换为数组,注意:这里转换是以行号为数组的外层下标,列号会转成数字为数组内层下标,坐标对应的值只会取字符串保留在这里,图片或链接不会出现在这里。
/*取图片*/
$imgData = array ();
$imageFilePath = '/images/' . date ( 'Y/m/d' ). '/' ; //图片保存目录
foreach ( $sheet ->getDrawingCollection()  as  $img ){
     list ( $startColumn $startRow ) = PHPExcel_Cell::coordinateFromString( $img ->getCoordinates()); //获取列与行号
     $imageFileName = $img ->getCoordinates().mt_rand(100,999);
     /*表格解析后图片会以资源形式保存在对象中,可以通过getImageResource函数直接获取图片资源然后写入本地文件中*/
     switch  ( $img ->getMimeType()){ //处理图片格式
         case  'image/jpg' :
         case  'image/jpeg' :
             $imageFileName .= '.jpg' ;
             imagejpeg( $img ->getImageResource(), $imageFilePath . $imageFileName );
             break ;
         case  'image/gif' :
             $imageFileName .= '.gif' ;
             imagegif( $img ->getImageResource(), $imageFilePath . $imageFileName );
             break ;
         case  'image/png' :
             $imageFileName .= '.png' ;
             imagepng( $img ->getImageResource(), $imageFilePath . $imageFileName );
             break ;
     }
     $imgData [ $startRow ][ $startColumn ]= $imageFileName ; //追加到数组中去
}
?>

wKioL1SU8grwBayBAAA5o7vzA_g402.jpg

上面是基本的导入解析功能,实际在图片处理上要简单的多,因为没有太多的附带属性,那在文本导出上就没有那么方便了,主要是表格在创建时存在着很多的格式,比如日期,在表格中写入日期系统会默认自动的修改当前格的格式为日期,在解析表格时就得注意了,因为这个数据并不是文本,如果按文本方式解析就会解析成5位数字,而非日期,这里就得用到设置解析格式,从而还原想要的数据。


导出生成:

PHPExcel的导出生成与导入解析是可逆的,可以说导入有哪些导出就有哪些

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
$excel = new  PHPExcel(); //创建PHPExcel对象
/*写入文档所有权属性*/
$excel ->getProperties()
     ->setCreator( "Maarten Balliauw" ) //设置创建人
     ->setLastModifiedBy( "Maarten Balliauw" ) //设置修改人
     ->setTitle( "Office 2007 XLSX Test Document" ) //设置标题
     ->setSubject( "Office 2007 XLSX Test Document" ) //设置题目
     ->setDescription( "Test document for Office 2007 XLSX, generated using PHP classes." ) //设置描述
     ->setKeywords( "office 2007 openxml php" ) //设置关键字
     ->setCategory( "Test result file" ); //设置种类
     
     
/*设置默认字体与大小*/
$excel ->getDefaultStyle()
     ->getFont() //获取字体对象
     ->setName( 'Arial' ) //设置字体
     ->setSize(10); //设置字体大小
     
     
/*设置当前的sheet*/
$excel ->setActiveSheetIndex(0);
 
/*设置sheet的name*/
$excel ->getActiveSheet()->setTitle( '表格1' );
 
/*写入常规文本*/
$excel ->getActiveSheet()
     ->setCellValue( 'A1' 'String' )
     ->setCellValue( 'B1' 'Simple' )
     ->setCellValue( 'C1' 'PHPExcel' );
     
     
/*写入自定义样式文本*/
$objRichText  new  PHPExcel_RichText();
$objRichText ->createText( '你好 ' );
$objPayable  $objRichText ->createTextRun( '你 好 吗?' );
$objPayable ->getFont()
     ->setBold(true);
$objPayable ->getFont()
     ->setItalic(true);
$objPayable ->getFont()
     ->setColor(  new  PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) );
$objRichText ->createText( ', unless specified otherwise on the invoice.' );
$excel ->getActiveSheet()
     ->setCellValue( 'A13' 'Rich Text' )
     ->setCellValue( 'C13' $objRichText );
     
     
/*写入有链接的文本*/
$excel ->getCell( 'A2' )
     ->setValue( 'web中的php' )
     ->getHyperlink()
     ->setUrl( 'http://php2012web.blog.51cto.com/' );
 
/*写入图片*/
//使用另一个表格图片对象添加图片
/*
     $img=new PHPExcel_Worksheet_MemoryDrawing();
     $img->setImageResource($images->getImageResource());
     $img->setMimeType($images->getMimeType());
     $img->setName($images->getName());
     $img->setDescription($images->getDescription());
*/
//使用本地图片
$img = new  PHPExcel_Worksheet_Drawing();
$img ->setPath( '/img/text.jpg' ); //写入图片路径
$img ->setHeight(100); //写入图片高度
$img ->setWidth(100); //写入图片宽度
$img ->setOffsetX(1); //写入图片在指定格中的X坐标值
$img ->setOffsetY(1); //写入图片在指定格中的Y坐标值
$img ->setRotation(1); //设置旋转角度
$img ->getShadow()->setVisible(true); //
$img ->getShadow()->setDirection(50); //
$img ->setCoordinates( 'B2' ); //设置图片所在表格位置
$img ->setWorksheet( $excel ->getActiveSheet()); //把图片写到当前的表格中
 
 
/*生成文件*/
 
$objWriter  = PHPExcel_IOFactory::createWriter( $excel 'Excel2007' ); //创建写文件生成器
$objWriter ->save( 'excel.xlsx' ); //生成文件
?>

本文转自  ttlxihuan    51CTO博客,原文链接:http://blog.51cto.com/php2012web/1620057
相关文章
|
1月前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
Web 性能优化|了解 HTTP 协议后才能理解的预加载
|
2月前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
86 15
|
3月前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
118 11
|
3月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
98 3
|
3月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
60 3
|
4月前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
|
4月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
241 1
|
4月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
39 0
|
5月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
284 8
|
5月前
|
缓存 安全 应用服务中间件
Web安全-HTTP Host头攻击
Web安全-HTTP Host头攻击
242 7