PHP输出Excel PHPExcel的方法

本文实例为大家分享PHP输出Excel PHPExcel的具体代码,供大家参考,具体内容如下

方法1:

1,'username'=>'YQJ','sex'=>'男','age'=>24)); * @return [array] [数组] */ function createtable($list,$filename,$header=array(),$index = array()){ header("Content-type:application/vnd.ms-excel"); header("Content-disposition:filename=".$filename.".xls"); $teble_header = implode("\t",$header); $strexport = $teble_header."\r"; foreach ($list as $row){ foreach($index as $val){ $strexport.=$row[$val]."\t"; } $strexport.="\r";

}
$strexport=iconv('UTF-8',"GB2312//IGnorE",$strexport);
exit($strexport);
}

方法代码量少,可以放在thinkPHP5中的公共函数common.PHP中,方便调用,但是对输出的Excel表格无法设置属性

方法2:

首先需要到下载SDK,nofollow" target="_blank" href="https://github.com/PHPOffice/PHPExcel">GitHub下载地址,下载后解压,我们只需要里边的Classes文件夹,将其改名为PHPExcel。我这里是基于thinkPHP5的,可以放置在app同级目录的extend中。

Loader::import('PHPExcel.PHPExcel'); //thinkphp5加载类库
$objPHPExcel = new \PHPExcel(); //实例化PHPExcel类,
$objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动的sheet对象
$objSheet->setTitle("test"); //给当前活动sheet起个名称

/字符串方式填充数据,开发中可以将数据库取出的数据根据具体情况遍历填充/
$objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级"); //填充数据
// $objSheet->setCellValue("A2","张三")->setCellValue("B2","3434346354634563443634634634563")->setCellValue("C2","一班"); //填充数据
$objSheet->setCellValue("A2","张三")->setCellValueExplicit("B2","123216785321321321312",\PHPExcel_Cell_DataType::TYPE_STRING)->setCellValue("C2","一班");//填充数据时添加方法,并且使用getNumberFormat方法和setFormatCode方法设置,可以让如订单号等长串数字不使用科学计数法

/数组方式填充数据/
$arr = [
[],//空出第一行,打印出的效果将空出第一行
['','信息'],//空出第一列,打印出的效果将空出第一列
['',"姓名\nname",'年龄','分数','年级'],//空出第一列,这里的\n是为了配合setWrapText自动换行
['','李四','33','男','33543653456346363646','4'],['','54546456456447478548','56635374658465632545','5'],'87473457856856745646','32','7'],'98',];
$objSheet->fromArray($arr); //填充数组数据,较为消耗资源且阅读不便,不推荐

/样式配置信息--方法配置/
$objSheet->mergecells("B2:F2"); //合并单元格
$objSheet->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//设置excel文件认水平垂直方向居中,垂直setVertical,水平setHorizontal,因为是基于thinkPHP5所以这里PHPExcel_Style_Alignment前使用"\"引入
$objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微软雅黑");//设置所有认字体大小和格式
$objSheet->getStyle("B2:F2")->getFont()->setSize(20)->setBold(true);//设置指定范围内字体大小和加粗
$objSheet->getDefaultRowDimension()->setRowHeight(33);//设置所有行认行高
$objSheet->getRowDimension(2)->setRowHeight(50);//设置指定行(第二行)行高
$objSheet->getStyle("B2:F2")->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('EEC591');//指定填充背景颜色,不需要加"#"定义样式数组,字体,背景,边框等都此方法设置,这里展示边框
$objSheet->getStyle("B3")->getAlignment()->setWrapText(true);//设置文字自动换行,要用getStyle()方法选中范围,同时要在内容添加"\n",而且该内容要用双引号才会解析
$objSheet->getStyle("E")->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//设置某列单元格格式为文本格式,便于禁用科学计数法

/数组配置/
$styleArray = array(
'borders' => array(
'outline' => array(
'style' => \PHPExcel_Style_Border::BORDER_THICK,'color' => array('rgb' => 'EE0000'),),);
$objSheet->getStyle("B3:G3")->applyFromArray($styleArray);//设置指定区域的边框,设置边框必须要使用getStyle()选中范围

$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');//生成objWriter对象,Excel2007(xlsx)为指定格式,还有Excel5表示Excel2003(xls)

/浏览器查看,浏览器保存/
self::browser_excel('Excel2007','test.xlsx');//输出到浏览器,参数1位Excel类型可为Excel5和Excel2007,第二个参数为文件名(需加后缀名),此方法自定义
$objWriter->save("PHP://output"); //save()里可以直接填写保存路径

/保存到知道路径/
$objWriter->save(ROOT_PATH."excel.xlsx"); //save()里可以直接填写保存路径

}

自定义的浏览器header设置方法

rush:PHP;"> /* 浏览器打开时设置header头 $type excel版本类型 Excel5---Excel2003,Excel2007 $filename 输出文件名 */ function browser_excel($type,$filename){ if($type=="Excel5"){ header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件 }else{ header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件 } header('Content-disposition: attachment;filename="'.$filename.'"');//告诉浏览器将输出文件名称,要是没有设置,会把当前文件名设置为名称 header('Cache-Control: max-age=0');//禁止缓存 }

想要获取更完善的配置信息,百度PHPExcel中文文档有很多参考资料。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?
C++程序:将一个数组的所有元素复制到另一个数组中
Golang:构建智能系统的基石
为什么AI开发者应该关注Golang?
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句
PHP8底层开发原理解析及新特性应用实例
利用PHP8底层开发原理解析新特性:如何构建出色的Web应用