PHP输出Excel实例代码

 这里使用PHPExcel的开源类

一个完整的实例:


<?php 
require_once("../includes/function.php"); //提供了SQL注入检测函数inject_check
require_once("../class/DB.php"); //DB操作类,自己扩展一下
$db = new DB(); if($_GET['show_year']){ $_GET['show_year'] = inject_check($_GET['show_year']); 
} else { echo "<script>location.href='{$_SERVER['REQUEST_URI']}';</script>"; return; 
} //查出开设预约的班级的学生名单 
$sql = "select * from bishe_student,student where bishe_student.sno=student.sno "; if($_GET['show_year'] && $_GET['show_year']!='-1'){ $lagreYear = $_GET['show_year']+1; $sql .= " and bishe_student.time>='{$_GET['show_year']}-01-01 00:00:00' and bishe_student.time<'{$lagreYear}-01-01 00:00:00'"; 
} $sql .= "order by bishe_student.time asc; "; $rs = $db->query($sql); /** 
*该PHP代码块开始为能够输出EXCEL文件作准备 
*/ **********************第一步,开头操作,包括引入类、设定文件基本属性 
require_once("../Excel/Classes/PHPExcel.php"); 
require_once("../Excel/Classes/PHPExcel/Writer/Excel5.php"); //单元格的字母坐标 
$colx = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','aa','ab','ac','ad','ae','af','ag','ah','ai','ak','al','am','an','ao','ap','aq','ar','as','at','au','av','aw','ax','ay','az'); 
// 创建一个处理对象实例        
$objExcel = new PHPExcel();        // 创建文件格式写入对象实例, uncomment        
$objWriter = new PHPExcel_Writer_Excel5($objExcel);  //设置文档基本属性        
$objProps = $objExcel->getProperties();        
$objProps->setCreator( gbkToUtf8("计算机学院专业实践中心") );        
$objProps->setLastModifiedBy( gbkToUtf8("计算机学院专业实践中心") );        
$objProps->setTitle( gbkToUtf8("毕业设计预约学生表") );        
$objProps->setSubject( gbkToUtf8("毕业设计预约学生表") );        
$objProps->setDescription( gbkToUtf8("毕业设计预约学生表") );        
$objProps->setKeywords( gbkToUtf8("毕业设计预约学生表") );        
$objProps->setCategory( gbkToUtf8("毕业设计预约学生表") );  //*************************************        
//设置当前的sheet索引,用于后续的内容操作。        
//一般只有在使用多个sheet的时候才需要显示调用。        
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0        
$objExcel->setActiveSheetIndex(0);        
$objActSheet = $objExcel->getActiveSheet();        //设置当前活动sheet的名称        
$objActSheet->setTitle('sheet1');  //设置宽度 
function setWidth($index,$width=5){ global $objActSheet; $objActSheet->getColumnDimension(gbkToUtf8($index))->setWidth($width); 
} //宽度设置 
for($i=0;$i<51;$i++){ //echo $colx[$i].""; $ind = $colx[$i]; setWidth(gbkToUtf8("$ind"),11); 
} $objActSheet->getRowDimension(1)->setRowHeight(30);     
$objActSheet->getRowDimension(2)->setRowHeight(20);     
$objActSheet->getRowDimension(3)->setRowHeight(16);  //函数:设置border 
function setBorder($index){ global $objActSheet; $objActSheet->getStyle($index)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );    $objActSheet->getStyle($index)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );    $objActSheet->getStyle($index)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );    $objActSheet->getStyle($index)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );  $objActSheet->getStyle($index)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  $objActSheet->getStyle($index)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);   $objActSheet->getStyle($index)->getAlignment()->setWrapText(true); } //设置值 
function setValue($index,$value){ global $objActSheet; $objActSheet->setCellValue($index,gbkToUtf8($value) );     
} //设置值 
function setValueGBK($index,$value){ global $objActSheet; $objActSheet->getCell($index)->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); 
} //合并单元格 
function merge($fc,$lc){ global $objActSheet; $objActSheet->mergeCells($fc.":".$lc);  
} //********************开始写入数据 $lastIndex = 10; $objActSheet->setCellValue('A1',gbkToUtf8( '毕业设计上机预约学生表' ) );     
//合并单元格    $objActSheet->mergeCells("A1:".$colx[$lastIndex]."1");     
//设置样式    
$objStyleA1 = $objActSheet->getStyle('A1');        
$objStyleA1->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);    
$objFontA1 = $objStyleA1->getFont();        
$objFontA1->setName('Courier New');        
$objFontA1->setSize(18);      
$objFontA1->setBold(true);  $rowIndexB = 3; 
function showBottomRows($xuhao='序号',$xuehao='学号',$xingming='姓名',$bishelaoshi='毕设老师',$bishetimu='毕设题目',$phone='电话',$email='Email',$beizhu='备注'){ global $colx; global $rowIndexB; $colIndexB = 0; //都分三步,设值、合并、边框 //序号 setValue($colx[$colIndexB].$rowIndexB   ,   $xuhao); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1;   //学号 setValue($colx[$colIndexB].$rowIndexB   ,   $xuehao); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //姓名 setValue($colx[$colIndexB].$rowIndexB   ,   $xingming); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //毕设老师 setValue($colx[$colIndexB].$rowIndexB   ,   $bishelaoshi); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //毕设题目 setValue($colx[$colIndexB].$rowIndexB   ,   $bishetimu); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB+2].$rowIndexB ); $colIndexB = $colIndexB+3; //电话 setValue($colx[$colIndexB].$rowIndexB   ,   $phone); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //Email setValue($colx[$colIndexB].$rowIndexB   ,   $email); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB+1].$rowIndexB ); $colIndexB = $colIndexB+2; //备注 setValue($colx[$colIndexB].$rowIndexB   ,   $beizhu); merge($colx[$colIndexB].$rowIndexB   ,    $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; for($xx=0;$xx<$lastIndex;$xx++){ setBorder($colx[$xx].$rowIndexB); } $rowIndexB++; 
} 
showBottomRows(); 
//********************************************表格头部结束 
*********************第一步结束,第二步就可以开始打印数据,在下面的主要函数里面 $order=1; 
while($row = $db->getRows($rs)){ showBottomRows( $order++ , " ".$row['sno'],  " ".$row['sname'] ,  " ".$row['bishe_teacher'], " ".$row['bishe_title'], " ".$row['bishe_phone'], " ".$row['bishe_email'], " " ); 
} //刷新border 
for($i=0;$i<=$lastIndex;$i++){ $objStyleA3 = $objActSheet->getStyle('A3');   $objStyleA3->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );    $objStyleA3->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );    $objStyleA3->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );    $objStyleA3->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );  $objStyleA3->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  $objStyleA3->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);  //$objActSheet->duplicateStyle($objStyleA3, 'A3:'.$colx[$lastIndex].(mysql_num_rows( $result_stuList )+3) );  $objActSheet->duplicateStyle($objStyleA3, 'A3:'.$colx[$lastIndex].($db->getRowsNum($rs)+3) );  
} $cancel_time=date("YmdHis");    
$outputFileName = "{$cancel_time}bisheYuyueStudentList.xls";        
//到文件        
$objWriter->save('../temp/'.$outputFileName); header("Content-Type: application/OCTET-STREAM"); header("Content-Disposition: inline; filename={$_GET['show_year']}年毕业设计上机预约学生表.xls"); readfile('../temp/'.$outputFileName); echo "<script language='javascript'> location.href='{$_SERVER['REQUEST_URI']}'; </script> "; 
?> 

 

 

 

转载于:https://www.cnblogs.com/crazyant/archive/2011/02/23/2823776.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1456. 定长子串中元音的最大数目(滑动窗口)

1. 题目 给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为&#xff08;a, e, i, o, u&#xff09;。 示例 1&#xff1a; 输入&#xff1a;s "abciiidef", k 3 输出&#xff1a;3 解释&a…

Xml文档添加节点和属性

在实际的应用开发中需要我们对xml进行添加节点和属性&#xff0c;动态的去完成&#xff0c;在这之前&#xff0c;先看看XmlNode和XmlElement之间的关系 1、XmlElement继承XmlLinkedNode又继承XmlNode&#xff0c;所以XmlElement是XmlNode的子集&#xff0c;那么从继承的关系来说…

html仿手机界面,javascript新手实例3-仿手机聊天界面(if else运用)

今天给大家一个if else的Javascript小示例&#xff0c;其中我在js文件里写了很多注释&#xff0c;有兴趣的同学自己看注释&#xff0c;另外对于聊天界面的显示方式&#xff0c;我写了两种&#xff0c;大家也可以分别试试&#xff1a;老规矩&#xff0c;先上图&#xff1a;html代…

Android开发环境搭建

刚刚接触Android&#xff0c;发现学的java都忘得差不多了~~分享一下android开发环境的搭建。 1.准备&#xff1a; 1)java sdk1.6 http://www.oracle.com/technetwork/java/javase/downloads/index.html 2)android sdk-windows http://developer.android.com/sdk/index.html 3)…

LeetCode 1457. 二叉树中的伪回文路径(位运算+递归)

1. 题目 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中&#xff0c;存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 示例 1&…

傅立叶变换计算机网络,中南大学 计算机网络与信号处理考试卷

计算机网络复习习题1一&#xff0e;选择题1、采用全双工工作&#xff0c;数据的传输方向为&#xff1a;()A&#xff0e;双向B。单向C。双向&#xff0c;但不能同时传输D。都不对2、BSC规程采用的成帧方式为()A&#xff0e;字节记数法B。使用字符填充的首尾定界符法C&#xff0c…

LeetCode 1458. 两个子序列的最大点积(动态规划,类似编辑距离)

1. 题目 给你两个数组 nums1 和 nums2 。 请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。 数组的非空子序列是通过删除原数组中某些元素&#xff08;可能一个也不删除&#xff09;后剩余数字组成的序列&#xff0c;但不能改变数字间相对顺序。 比方说&a…

编译html成qch,在应用程序编译过程中运行qcollectiongenerator

我一直在研究一个名为RoboJournal的程序很长一段时间。下一版本包含完整的文档;每当用户按F1或单击RoboJournal程序中的帮助项目时&#xff0c;帮助文件将显示在Qt助手中(比简单地打开浏览器窗口以获得一些联机文档更加方便)。在应用程序编译过程中运行qcollectiongenerator在其…

LeetCode 826. 安排工作以达到最大收益(map)

1. 题目 有一些工作&#xff1a;difficulty[i] 表示第i个工作的难度&#xff0c;profit[i]表示第i个工作的收益。 现在我们有一些工人。worker[i]是第i个工人的能力&#xff0c;即该工人只能完成难度小于等于worker[i]的工作。 每一个工人都最多只能安排一个工作&#xff0c…

Unparsed aapt error(s)! Check the console for output

现象&#xff1a;eclipse项目上有红叉&#xff0c;却找不到哪个文件有错。 eclipse中有“problems”的窗口&#xff0c;一般和“console”并列&#xff0c;上面会找到红叉叉的问题所在&#xff08;Unparsed aapt error(s)! Check the console for output"&#xff09; 原因…

LeetCode 837. 新21点(动态规划)

文章目录1. 题目2. 解题2.1 暴力超时2.2 优化1. 题目 爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏&#xff0c;描述如下&#xff1a; 爱丽丝以 0 分开始&#xff0c;并在她的得分少于 K 分时抽取数字。 抽取时&#xff0c;她从 [1, W] 的范围中随机获得一个整数作为…

sql 查看Oralce 数据库连接状态

select sid,serial#,username,program,machine,status from v$session order by username转载于:https://www.cnblogs.com/xinlang/archive/2011/02/28/1966819.html

LeetCode 793. 阶乘函数后K个零(二分查找)

1. 题目 f(x) 是 x! 末尾是0的数量。&#xff08;回想一下 x! 1 * 2 * 3 * ... * x&#xff0c;且0! 1&#xff09; 例如&#xff0c; f(3) 0 &#xff0c;因为3! 6的末尾没有0&#xff1b;而 f(11) 2 &#xff0c;因为11! 39916800末端有2个0。给定 K&#xff0c;找出多…

海量数据库解决方案2011030101

【摘抄】索引的真正意义&#xff1a;索引是优化器在制定执行计划时&#xff0c;为了寻找最优化的路径而使用的战略要素。类型&#xff1a;B-Tree索引位图索引(Bitmap)B-Tree聚簇索引哈希聚簇索引反向键索引位图连接索引基于自定义函数的索引B-Tree索引最主要的特征就是不论表中…

计算机网络划分的标准,计算机网络基础

1.具有统一的网络体系结构、遵循国际标准化协议的计算机网络在第三代网络出现以前各厂家为了霸占市场采用自己独特的技术并开发了自己的网络体系结构网络无法实现不同厂家设备互连这样就阻碍了大范围网络的发展。后来为了实现网络大范围的发展和不同厂家设备的互连1977年国际标…

LeetCode 399. 除法求值(图的DFS搜索)

1. 题目 给出方程式 A / B k, 其中 A 和 B 均为用字符串表示的变量&#xff0c; k 是一个浮点型数字。 根据已知方程式求解问题&#xff0c;并返回计算结果。如果结果不存在&#xff0c;则返回 -1.0。 示例 : 给定 a / b 2.0, b / c 3.0 问题: a / c ?, b / a ?, a / …

vbs调用WebService -- 使用xmlhttp

具体调用的代码&#xff1a; 向指定的文件写入文本, 并指定是否是添加内容 Function Z_WriteFile(sFileName, sText, bAppend)Dim fs, fso, iomodeif bAppend True Theniomode 8 ForAppendingelseiomode 2 ForWritingend ifset fs CreateObject(…

大型软件是否占用计算机内存,电脑系统开机内存占用多少正常

原标题&#xff1a;电脑系统开机内存占用多少正常正常情况下有多少启动内存&#xff1f;如果使用2G内存&#xff0c;则Win7在启动时基本上可以达到50&#xff05;以上&#xff0c;运行点程序肯定会达到80&#xff05;&#xff0c;这是正常的。如果使用4G内存&#xff0c;则Win7…

LeetCode 990. 等式方程的可满足性(并查集)

1. 题目 给定一个由表示变量之间关系的字符串方程组成的数组&#xff0c;每个字符串方程 equations[i] 的长度为 4&#xff0c;并采用两种不同的形式之一&#xff1a;"ab" 或 "a!b"。 在这里&#xff0c;a 和 b 是小写字母&#xff08;不一定不同&#xf…

breakcontinue

break 在循环语句的循环体中&#xff0c;用来提前结束当前循环体&#xff0c;执行循环体后面的语句。 continue 跳过循环体中continue后面尚未执行的语句&#xff0c;直接进行下一次是否执行循环的判定。即只结束本次循环。转载于:https://www.cnblogs.com/happykakeru/archive…