php 基于phpexcel制作的导出excel类,phpexcelexcel
php 基于phpexcel制作的导出excel类,phpexcelexcel
最近要写个项目,由于项目中导出excel太多,因此写个类便于使用。
<?php /* *@使用方法。 *引入类库。 * $excel = news excelC(); *$excel->fileName = '文件名称';//设置文件名称,默认为时间戳 *$excel->format = '2007';//文件类型,默认为2007,其他为excel5 *$record = array( 'delKey'=>array('id','addTime','status'),//如果数据$data中有不需要显示的列,可以在此说明。删除不需要导出的键值 'sort' =>array( 'keyName'=>array('subjectName','flag'),//按keyName列排序,如果不存在则不排序。 //'reorder'=>'DESC',//排序方式,DESC为倒序,ASC为正序。如果keyName存在则排序keyName,如果不存在则按数组的键名排序,如果reorder不存在则不排序 ),//排序 如果sort存在则排序,否则不排序,如果keyName存在则按设置排序,如果不存在则按字符排序,如果reorder不存在或为空或为DES则正序,等于DESC为倒序。 'excelStyle' =>array( 'setName'=>'Arial',//字体样式 'setSize'=>'12',//字体大小 ),//表格全局样式 'title' =>array('tableName'=>'学科列表','center'=>true,'direction'=>'right','merge'=>'2','setSize'=>'30'),//标题,center垂直,direction为合并方向。right,left,up,down。 merge为合并几个单元格,setSize为字体大小 'data' =>array( array('tableName'=>'科目名称','width'=>'30','setName'=>'宋体','setSize'=>'20','background'=>'red','textColor'=>'white','bold'=>true,'underline'=>true,'borderColor'=>'cyan','center'=>true,), array('tableName'=>'学科','width'=>'50','center'=>true),//颜色表是:black,white,red,green,blue,yellow,magenta,cyan ),//表名称 tableName为名称,width为表格宽度,setName为字体样式,background为背景颜色,textColor为字体颜色,bold为加粗,underline为下划线,borderColor为边框颜色. 'merge' =>array( //'flag'=>array('keyword'=>'初','direction'=>'right','merge'=>'2'),merge的键值为需要处理数据数组的键值,keyword为如果存在此关键字才执行其他样式操作,如果keyword不存在则执行所有键值为flag的单元格。 'all'=>array('width'=>'30','setName'=>'宋体','setSize'=>'20','background'=>'red','textColor'=>'white','bold'=>true,'underline'=>true,'borderColor'=>'cyan','center'=>true,), ),// );//导出配置 *$excel->export($record,$data);//$record为导出配置,$data为数据库的数据,$data可以为数组,也可以为对象。 * * * */ $address = dirname(dirname(__FILE__)).'/PHPExcel'; include $address.'/PHPExcel.class.php'; include $address.'/PHPExcel/Writer/Excel2007.php'; include $address.'/PHPExcel/Writer/Excel5.php'; include $address.'/PHPExcel/IOFactory.php'; /**************************** *生成excel文档。 */ class excelC { public $format = '2007';//转换格式,默认为2007版本,其他版本,请输入不是2007的数字 public $fileName;//文件名称默认为时间戳。 private $objExcel; private $letters; public function __construct() { $this->fileName = time(); $this->fileTitle = '导出数据'; $this->objExcel = new PHPExcel(); $this->letters = $this->letter(); } //导出excel的属性 private function attribute(){ $this->objExcel->getProperties()->setCreator("力达行有限公司");//创建人 $this->objExcel->getProperties()->setLastModifiedBy("力达行有限公司");//最后修改人 $this->objExcel->getProperties()->setTitle("导出数据");//标题 $this->objExcel->getProperties()->setSubject("导出数据");//题目 $this->objExcel->getProperties()->setDescription("数据导出");//描述 $this->objExcel->getProperties()->setKeywords("office 导出");//关键字 $this->objExcel->getProperties()->setCategory("excel");//种类 } //设置表(如果只有一个sheet可以忽略该函数,将默认创建。) private function sheet(){ $this->objExcel->setActiveSheetIndex(0);//设置当前的表 $this->objExcel->getActiveSheet()->setTitle('excel');//设置表名称。 } /*************************** *导出excel *@attr $record为表头及样式设置 *@attr $data为需要导出的数据 */ public function export($record=array(),$data=array()){ if(!$data)return false; if(!is_array($record))return false;//表样式及其他设置 //处理获取到的数据 $data = $this->maniData($record,$data); //获取整体样式。 $this->excelData($record,$data); //$this->objExcel->getActiveSheet()->setCellValue('A1', '季度'); $this->down();//导出下载 } /* *处理表格 */ private function excelData(&$record,&$data){ $this->attribute();//设置属性 $this->sheet();//设置表 $this->whole($record);//设置整体样式 $this->tableHeader($record);//设置表格头。 $this->tableContent($record,$data);//设置表格 $this->excelTitle($record,2);//设置标题 } /* *设置表格整体样式 */ private function whole(&$record){ if(!array_key_exists('excelStyle',$record))return false; $excelStyle = $record['excelStyle']; $default = $this->objExcel->getDefaultStyle(); if(array_key_exists('setName',$excelStyle)) $default->getFont()->setName($excelStyle['setName']);//设置字体样式 if(array_key_exists('setSize',$excelStyle)) $default->getFont()->setSize($excelStyle['setSize']);//设置字体大小 } /* *设置标题 */ private function excelTitle($record,$num){ $titleL = $this->letters[0]; if(!array_key_exists('title',$record))return false; $this->appOintStyle($titleL ,1,$record['title']); } /* *设置表格头。 */ private function tableHeader($record){ if(!array_key_exists('data',$record))return false; $objExcel = $this->objExcel; $letters = $this->letters; if(!is_array($record['data']))return false; $i = 0; $hang = 2; foreach($record['data'] as $k=>$v){ $this->appOintStyle($letters[$i],$hang,$v); $i++; } } private function setCellValue($letter,$data){ if(@$data) $this->objExcel->getActiveSheet()->setCellValue($letter, $data);//填充值 return $this; } private function getColumnDimension($letter,$data){ if(@$data) $this->objExcel->getActiveSheet()->getColumnDimension($letter)->setWidth($data);//设置宽度 return $this; } private function setName($letter,$data){ if(@$data) $this->objExcel->getActiveSheet()->getStyle($letter)->getFont()->setName($data);//设置字体 return $this; } private function setSize($letter,$data){ if(@$data) $this->objExcel->getActiveSheet()->getStyle($letter)->getFont()->setSize($data);//设置字体大小 return $this; } private function background($letter,$data){ if(@$data){ $this->objExcel->getActiveSheet()->getStyle($letter)->getFill()->getStartColor()->setARGB($this->backColor($data)); $this->objExcel->getActiveSheet()->getStyle($letter)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置背景色样式,无样式将不显示背景色。 } return $this; } private function textColor($letter,$data){ if(@$data){ $this->objExcel->getActiveSheet()->getStyle($letter)->getFont()->getColor()->setARGB($data);//字体颜色 } return $this; } private function setBold($letter,$data){ if(@$data){ $this->objExcel->getActiveSheet()->getStyle($letter)->getFont()->setBold(true);//加粗 } return $this; } private function setUnderline($letter,$data){ if(@$data){ $this->objExcel->getActiveSheet()->getStyle($letter)->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);//下划线 } return $this; } private function border($letter,$data){ if(@$data){ $styleThinBlackBorderOutline = array( 'borders' => array ( 'outline' => array ( 'style' => PHPExcel_Style_Border::BORDER_THIN, //设置border样式 'color' => array ('argb' => $data), //设置border颜色 ), ), ); $this->objExcel->getActiveSheet()->getStyle($letter)->applyFromArray($styleThinBlackBorderOutline); } return $this; } /* *合并 */ private function mergeCells($letters,$hang,$direction,$merge){ $merge = $merge-1; if($merge > 0 && $direction){ //print_r($this->letters); $l = array_flip($this->letters); $ln = $l[$letters]; switch ($direction) { case 'left': $signal = $this->letters[($ln-$merge)].$hang.':'.$letters.$hang; break; case 'right': $signal = $letters.$hang.':'.$this->letters[($ln+$merge)].$hang; break; case 'up': $signal = $letters.($hang-$merge).':'.$letters.$hang; break; case 'down': $signal = $letters.$hang.':'.$letters.($hang+$merge); break; default: $signal = ''; } if($signal){ $this->objExcel->getActiveSheet()->mergeCells($signal); } } return $this; } /* *垂直居中 */ private function setVertical($letter,$data){ if($data){ $this->objExcel->getActiveSheet()->getStyle($letter)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $this->objExcel->getActiveSheet()->getStyle($letter)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); } return $this; } /* *设置颜色 */ private function backColor($color){ $array = array( 'black' => 'FF000000', // System Colour #1 - Black 'white' => 'FFFFFFFF', // System Colour #2 - White 'red' => 'FFFF0000', // System Colour #3 - Red 'green' => 'FF00FF00', // System Colour #4 - Green 'blue' => 'FF0000FF', // System Colour #5 - Blue 'yellow' => 'FFFFFF00', // System Colour #6 - Yellow 'magenta' => 'FFFF00FF', // System Colour #7- Magenta 'cyan' => 'FF00FFFF', // System Colour #8- Cyan ); if(array_key_exists($color,$array)){ return $array[$color]; } else { return false; } } /* *设置表 */ private function tableContent(&$record,&$data){ $objExcel = $this->objExcel; $letters = $this->letters; if(array_key_exists('merge',$record)) $merge = $record['merge']; else $merge = ''; $hang = 2; foreach($data as $k=>$v){ $i=0; $hang++; foreach($v as $kk=>$vv){ $this->setCellValue($letters[$i].$hang, $vv);//设置内容 $this->Appoint($kk,$vv,$letters[$i],$hang,$merge); $i++; } } } /* *设置表指定样式 */ private function Appoint($kk,$vv,$letters,$hang,$merge){ if(!$merge)return false; if(array_key_exists($kk,$merge)){ $v = $merge[$kk]; if(array_key_exists('keyword',$v)){ if(strpos($vv,$v['keyword']) > -1){ $this->appOintStyle($letters,$hang,$v); } } else { $this->appOintStyle($letters,$hang,$v); } } else if(array_key_exists('all',$merge)){ $v = $merge['all']; if(array_key_exists('keyword',$v)){ if(strpos($vv,$v['keyword']) > -1){ $this->appOintStyle($letters,$hang,$v); } } else { $this->appOintStyle($letters,$hang,$v); } } } /* *终极样式 */ private function appOintStyle($letters,$hang,$v){ $this ->setCellValue($letters.$hang,@$v['tableName']) ->getColumnDimension($letters,@$v['width']) ->setName($letters.$hang,@$v['setName']) ->setSize($letters.$hang,@$v['setSize']) ->background($letters.$hang,@$v['background']) ->textColor($letters.$hang,$this->backColor(@$v['textColor'])) ->setBold($letters.$hang,@$v['bold']) ->setUnderline($letters.$hang,@$v['underline']) ->border($letters.$hang,$this->backColor(@$v['borderColor'])) ->mergeCells($letters,$hang,@$v['direction'],@$v['merge']) ->setVertical($letters.$hang,@$v['center']); } /* *应为字母列表 */ public function letter(){ return array('A','B','C','D','F','G','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','H','Y','Z'); } /**************************** *处理数据,排序及删除字段 */ private function maniData($record,$data){ if(!$data)return false; if(!is_array($record))return false;//表样式及其他设置 $data = $this->objectToArray($data);//对象转数组 $delKey = (array_key_exists('delKey',$record))?$record['delKey']:'';//是否删除关键字 $sort = (array_key_exists('sort',$record))?$record['sort']:'';//是否排序 $data = $this->delSort($data,$delKey,$sort); return $data; } /**************************** *对象转数组 */ private function objectToArray($data){ if(!$data)return false; $data = (array)$data; foreach($data as $k=>$v){ if(is_object($v) || is_array($v)){ $data[$k] = (array)$this->objectToArray($v); } } return $data; } /**************************** *删除键值,并排序 */ private function delSort($data,$delKey='',$sort=''){ if(!$data)return false; $array = array(); foreach($data as $k=>$v){ //删除数据中的某个键值 $delData = $this->delData($v,$delKey); //按设定键值排序 $sortData = $this->sortData($delData,$sort); $array[$k] = $sortData; } return $array; } /**************************** *删除键值 */ public function delData($data,&$delKey){ if($delKey){ foreach($delKey as $delVal){ if(array_key_exists($delVal,$data))//判断键值是否存在 unset($data[$delVal]);//清除键名。 } } return $data; } /**************************** *键值排序 */ public function sortData($data,&$sort){ $array = array(); if($sort){ if(array_key_exists('keyName',$sort)){ $keyName = $sort['keyName']; if(array_key_exists('reorder',$sort)){ if($sort['reorder'] == 'DESC'){ krsort($keyName); } else if($sort['reorder'] == 'ASC'){ ksort($keyName); } } foreach($keyName as $vn){ $array[$vn] = (array_key_exists($vn,$data))?$data[$vn]:''; } } else { if(array_key_exists('reorder',$sort)){ if($sort['reorder'] == 'DESC'){ krsort($data); } else if($sort['reorder'] == 'ASC'){ ksort($data); } $array = $data; } } } return $array; } //导出下载 private function down(){ if($this->format == '2007'): header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); $excel = 'Excel2007'; else: header('Content-Type: application/vnd.ms-excel'); $excel = 'Excel5'; endif; header("Content-Disposition: attachment; filename=\"$this->fileName\""); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($this->objExcel, $excel); $objWriter->save('php://output'); } }
你好,其实非常简单的问题,就是将要打印的页面的头设置为!
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=php100.xls");
这样,浏览器就直接下载该文件。将文件里面的
内容 |

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Excel表格是一款很常用的辦公室軟體,很多使用者都會在表格中記錄下各種數據,但是表格明明有數據單篩選是空白,關於這個問題,很多用戶都不知道要怎麼解決,沒有關係,本期軟體教程內容就來為廣大用戶們進行解答,有需要的用戶歡迎來查看解決方法吧。 Excel表格中明明有資料但篩選空白怎麼辦? 第一種原因,表格中含有空行 我們要篩選所有姓「李」的人,但可以看到並沒有篩選出正確的結果,因為表格中含有空行,這種情況如何處理呢? 解決方法: 步驟一:選取所有的內容再進行篩選 按c

DeepSeek 無法直接將文件轉換為 PDF。根據文件類型,可以使用不同方法:常見文檔(Word、Excel、PowerPoint):使用微軟 Office、LibreOffice 等軟件導出為 PDF。圖片:使用圖片查看器或圖像處理軟件保存為 PDF。網頁:使用瀏覽器“打印成 PDF”功能或專用的網頁轉 PDF 工具。不常見格式:找到合適的轉換器,將其轉換為 PDF。選擇合適的工具並根據實際情況制定方案至關重要。

Excel表格求平均值的方法:1.使用AVERAGE函數,選取一個空白儲存格輸入函數“=AVERAGE”,按下回車鍵即可;2、使用SUM函數和COUNT函數,選取一個空白儲存格輸入函數“=SUM/COUNT”,按下回車鍵即可;3、使用IF函數和AVERAGE函數,選取一個空白儲存格輸入函數“=AVERAGE,按下Ctrl+Shift+Enter組合鍵即可。

在日常生活,發現Excel表格無法篩選了,怎麼辦? Excel是最常用的資料處理工具之一,幫助使用者簡單快速的完成資料輸入與整理,為了讓使用者能夠順利使用Excel,以下就來看看Excel表格篩選不了的解決方法。 1、先開啟Excel文檔,點選選單中的【檢視】選項。 2、點選工具列中的【凍結視窗】選項。 3、然後在開啟的選項中,將凍結設定取消。 4、取消後即可重新進行篩選。

在工作中,我們常常會把製作的表格和文件印成紙本版,由於表格內容過多過長,有時候不能全部列印出來,這該怎麼辦呢,接下來大家就一起學習:excel表格列印不全一部分印不出來怎麼處理。方法/步驟1:首先,我們需要準備要列印的表格,並對其進行調整。在保持比例的基礎上,盡量縮短橫向長度,就像圖中所示的那樣。 2、之後我們點選介面左上角的」檔案「按鈕,如圖所示。 3、之後我們在彈出來的選項中,點擊」列印“,如圖所示。 4、之後即可彈出列印的預覽窗口,我們在裡面點擊」列印預覽“,如圖所示。 5、之

在資料運用的時候可能會涉及多個表格,幾個表格的資料要來回進行使用,而一個表格一個視窗很不方便,這就要不斷的進行表格切換,如果需要的資料表格可以同時顯示在一個螢幕上,那就大量的節省了重複切換表格的時間。我們今天就以兩個表格為例,看看小編怎麼讓他們神奇的在一個螢幕上顯示出來,課程馬上開始了!為了實現兩個表格同時顯示的功能,可以新建兩個Excel表格,一個命名為TEST1,另一個命名為TEST2。打開這兩張表格,並在其中填寫一些內容,如下圖所示。 2、任意開啟一個表格,點選上方工具列中的「視圖」按鈕

隨著現代生活節奏的加快,在設定密碼多的情況下,很難把各個密碼都記住,例如忘記自己設定的Excel表格的密碼,那遇到這種情況該怎麼辦呢?要重做太麻煩了!接下來就提供給大家一個解決方法,快來試試看。首先,找到被保護密碼的工作表Excel文件,然後將文件名稱後綴從.xlsx更改為.rar,此舉不會對文件造成重大影響,如有提示可忽略。 2、用壓縮文件開啟忘記密碼的Excel文件,然後按以下步驟進行操作:xl——worksheets——sheet1.xml(這裡是將sheet1工作表設定了保護密碼,可根據

問題:DeepSeek是否可用於會計?回答:不是,它是一個數據挖掘和分析工具,可用於分析財務數據,但本身不具備會計軟件的賬目記錄和報表生成功能。使用DeepSeek分析財務數據需要:編寫代碼來處理數據具備對數據結構、算法和DeepSeek API的了解考慮潛在的問題(例如,編程知識、學習曲線、數據質量)
