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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,