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

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

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电子邮件输入编程框