phpexcel 的前端封装类

2024-03-24 18:48

本文主要是介绍phpexcel 的前端封装类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说到phpexcel,做php开发的童鞋可能都不陌生的,强大的excel表格导出类。它到底有多强大呢?可以导出xls,xlsx(唯一见到的可以导出excel2007的php类),html,pdf,csv等。还可以对xml模板进行编辑然后保存,还可以在excel里面设置图片,画表格,字体的大小,字体表格的颜色等,强大得你都想想不到。但phpexcel导出的pdf实在不敢让人恭维。最近研究了下,写了一个类可以同时导出xls,xlsx,csv,html。主要对其进行了前端的封装。现贴代码上来。



<?php
/*** 导出excel2003* @author tengzhaorong@gmail.com* 2011-10-25*/
//@todo cvs格式输出中文乱码 有没有必要同时生成html excel2003 excel2007 	
/** Error reporting */
error_reporting ( E_ALL );
header ( 'Content-Type:text/html;charset=gbk' );
date_default_timezone_set ( 'Asia/Shanghai' );/** PHPExcel */
require_once 'excel/PHPExcel.php';class Excel {private $_objPHPExcel; //excel 句柄private $_savePath = "attach"; //保存目录//private $_type = array ( "xls" ); //文件类型private $_suffix = array ( 'xls' , 'xlsx' , 'html' ,'htm','csv');private $letter = array ( 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'M' , 'N' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' );function __construct () {$this->_objPHPExcel = new PHPExcel ();}/*** Enter 设置头.** @param array $data*/function setMenu ( $data ) {if ( ! is_array ( $data ) ) {$data = ( array ) $data;}foreach ( $data as $k => $v ) {//$v=iconv("utf-8","gb2312",$v);$this->_objPHPExcel->setActiveSheetIndex ( 0 )->setCellValue ( $this->letter [$k] . "1", $v );}}/*** Enter 设置属性.** @param array $data*/function setProperties ( $data ) {if ( ! is_array ( $data ) ) {$data = ( array ) $data;}if ( in_array ( "creator", array_keys ( $data ) ) ) {$this->_objPHPExcel->getProperties ()->setCreator ( $data ['creator'] );}if ( in_array ( "lastModifiedBy", array_keys ( $data ) ) ) {$this->_objPHPExcel->getProperties ()->setLastModifiedBy ( $data ['lastModifiedBy'] );}if ( in_array ( "title", array_keys ( $data ) ) ) {$this->_objPHPExcel->getProperties ()->setTitle ( $data ['title'] );}if ( in_array ( "subject", array_keys ( $data ) ) ) {$this->_objPHPExcel->getProperties ()->setSubject ( $data ['subject'] );}if ( in_array ( "description", array_keys ( $data ) ) ) {$this->_objPHPExcel->getProperties ()->setDescription ( $data ['description'] );}if ( in_array ( "keywords", array_keys ( $data ) ) ) {$this->_objPHPExcel->getProperties ()->setKeywords ( $data ['keywords'] );}if ( in_array ( "category", array_keys ( $data ) ) ) {$this->_objPHPExcel->getProperties ()->setCategory ( $data ['category'] );}}/*** Enter 设置数据** @param array $data*/function setData ( $data ) {if ( ! is_array ( $data ) ) {$data = ( array ) $data;}foreach ( $data as $k => $v ) {foreach ( $v as $index => $value ) {//$value=iconv("utf-8","gb2312",$value);$this->_objPHPExcel->setActiveSheetIndex ( 0 )->setCellValue ( $this->letter [$index] . ($k + 2), $value );}}}/*** Enter 设置标题** @param string $title*/function setTitle ( $title ) {$this->_objPHPExcel->getActiveSheet ()->setTitle ( $title );}/*** Enter 保存文件** @param string $filename* @param array $type*/function save ( $type,$filename = "") {if ( ! $filename ) {$filename = time ();}if(!is_array($type)){$type=(array)$type;}foreach ( $type as $k => $v ) {if ( in_array ( $v,$this->_suffix ) ) {$suffix = $v;}else {continue;}$path = $this->_savePath . "/" . $filename . "." . $suffix;switch ($v) {case "htm":case "html" :$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, "HTML" );$objWriter->save ( $path );break;case "xls" :$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, "Excel5" );$objWriter->save ( $path );break;case "xlsx" :$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, "Excel2007" );$objWriter->save ( $path );break;case "csv" :$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, 'CSV' )->setDelimiter ( ',' )->setEnclosure ( '' )->setLineEnding ( "\r\n" )->setSheetIndex ( 0 );break;default :print( "sorry!".$v." not support" );}}}/*** Enter 浏览器输出** @param string $filename* @param string $type*/function output ($type="xls",$filename = "") {if ( ! $filename ) {$filename = time ();}if ( in_array ( $type, $this->_suffix  ) ) {$suffix = $type;}else {$suffix = "xls";}switch ($type) {case "xls" :header ( 'Content-Type: application/vnd.ms-excel' );header ( 'Content-Disposition: attachment;filename="' . $filename . '.' . $suffix . '"' );header ( 'Cache-Control: max-age=0' );$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, 'Excel5' );break;case "xlsx" :header ( 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' );header ( 'Content-Disposition: attachment;filename="' . $filename . '.' . $suffix . '"' );header ( 'Cache-Control: max-age=0' );$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, 'Excel2007' );break;case "html" :header ( "Content-Type:HTML text data" );header ( 'Content-Disposition: attachment;filename="' . $filename . '.' . $suffix . '"' );header ( 'Cache-Control: max-age=0' );$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, 'HTML' );break;case "csv" ://header ( "Content-type:text/csv" );Header('Content-Type: application/msexcel;charset=gbk');header ( 'Content-Disposition:attachment;filename="' . $filename . '.' . $suffix . '"' );//header ( 'Cache-Control:must-revalidate,post-check=0,pre-check=0' );//header ( 'Expires:0' );//header ( 'Pragma:public' );$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, 'CSV' );break;default :header ( "Content-Type:HTML text data" );header ( 'Content-Disposition: attachment;filename="' . $filename . '.' . $suffix . '"' );header ( 'Cache-Control: max-age=0' );$objWriter = PHPExcel_IOFactory::createWriter ( $this->_objPHPExcel, 'HTML' );break;}$objWriter->save ( 'php://output' );}/*** Enter 设置存储目录** @param string $path*/function setAttachDir ( $path ) {if ( ! is_dir ( $path ) ) {mkdir ( $path, 755 );}if(!is_writable($path)){chmod($path, 755);}$this->_savePath = $path;}
}

实现的功能不多,目前只可以简单的同时导出几种格式的文件。


下面为实例代码

$data [0] = array ( '什么' , '20' );$data [1] = array ( '小刚' , '20' );$data [2] = array ( '小开' , '20' );//数据$excel = new Waf_excel ();$excel->setProperties ( array ( "title" => '不神奇' ) );//设置属性 可设置的属性有 creator  lastModifiedBy title  subject  description  keywords  	category。$excel->setMenu ( array ( '乱码' , "年纪" ) );//设置菜单栏目$excel->setData ( $data );//设在数据$excel->setTitle ( "一个神奇的网站" );//设置显示的标题$excel->setAttachDir ( "backs" );//设置数据保存的目录 默认情况为 当前目录下的 attach$excel->output ("csv", "kk" );//直接下载导出 不生存文件 csv格式 文件名为kk$excel->save (array("csv"), "kk" )//直接保存到文件夹里,可以同时保存csv html xls xlsx 格式,第一个参数为保存的格式,可为数组也可为字符串,第二参数为文件名。
phpexcel 下载地址 http://phpexcel.codeplex.com/releases/view/45412

 

这篇关于phpexcel 的前端封装类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/842454

相关文章

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,