PHP输出Excel PHPExcel的方法
程序员文章站
2022-07-06 10:51:49
本文实例为大家分享了php输出excel phpexcel的具体代码,供大家参考,具体内容如下
方法1:
/**
* 创建(导出)excel数据表格...
本文实例为大家分享了php输出excel phpexcel的具体代码,供大家参考,具体内容如下
方法1:
/** * 创建(导出)excel数据表格 * @param array $list 要导出的数组格式的数据 * @param string $filename 导出的excel表格数据表的文件名 * @param array $header excel表格的表头 * @param array $index $list数组中与excel表格表头$header中每个项目对应的字段的名字(key值) * 比如: $header = array('编号','姓名','性别','年龄'); * $index = array('id','username','sex','age'); * $list = array(array('id'=>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,github下载地址,下载后解压,我们只需要里边的classes文件夹,将其改名为phpexcel。我这里是基于thinkphp5的,可以放置在app同级目录的extend中。
/* phpexcel */ public function excel(){ 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'], ['','李四','33','男','54546456456447478548','4'], ['','李四','33','男','56635374658465632545','5'], ['','李四','33','男','87473457856856745646','5'], ['','李四','33','男','32','7'], ['','李四','33','男','98','5'], ]; $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设置方法
/* 浏览器打开时设置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中文文档有很多参考资料。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: PHP多个图片压缩成ZIP的方法