天天看點

phpexcel 導出封裝的類

<?php
namespace app\admin\controller;

use think\Model;
use PHPExcel_IOFactory;
use PHPExcel;
require "../vendor/phpoffice/phpexcel/Classes/PHPExcel.php";
class ExportExcel extends Common
{
    public function exportExcel($expTitle,$expCellName,$expTableData){
        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//檔案名稱
        $fileName = $expTitle.date('_YmdHis');//or $xlsTitle 檔案名稱可根據自己情況設定
        $cellNum = count($expCellName);
        $dataNum = count($expTableData);
        if($dataNum==0) $dataNum=500;   //模闆下載下傳自動填充行

        $objPHPExcel = new PHPExcel();
        $cellName = 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','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
        
        
//		$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并單元格
        // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));
        for($i=0;$i<$cellNum;$i++){
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1', $expCellName[$i][1]);
            
            if($expTitle=='訂單'){
                $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(30);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(30);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(30);//列寬
                $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(30);//列寬
            }
        }
        // Miscellaneous glyphs, UTF-8
        for($i=0;$i<$dataNum;$i++){
            for($j=0;$j<$cellNum;$j++){
        //設定表格的高度自适應
                $objPHPExcel->getActiveSheet()->getStyle($cellName[$j].($i+2))->getAlignment()->setWrapText(true);
                $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2), $expTableData[$i][$expCellName[$j][0]]);
                
            }
        }
       
        
        
        ob_end_clean();//清除緩沖區,避免亂碼
        header('Content-Type: application/vnd.ms-excel');
        header('pragma:public');
        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
        header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新視窗列印inline本視窗列印
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;
    }
}
           

調用的時候用:

//$xlsName 表名稱  xlsCell 表列  list 表中的資料
$xlsName  = "訂單";
$xlsCell  = array(
   array('id','訂單編号'),
   array('order_id','訂單id'),
   array('user_name','預訂人姓名'),
   array('user_phone','預訂人電話'),
   array('out_order_id','第三方交易号'),
   array('pay_status','支付狀态'),
   array('status','訂單狀态'),
   array('pay_time','支付時間'),
   array('all_price','總價格'),
);
$model=new ExportExcel;
$result=$model->exportExcel($xlsName,$xlsCell,$list);
           

希望對大家有幫助

其他的一些方法:

$objPHPExcel = new PHPExcel();
 
// 設定檔案屬性
$objPHPExcel->getProperties()->setCreator("C1G")
                             ->setLastModifiedBy("C1G")
                             ->setTitle("phpexcel Test Document")
                             ->setSubject("phpexcel Test Document")
                             ->setDescription("Test document for phpexcel, generated using PHP classes.")
                             ->setKeywords("office 2007 openxml php c1gstudio")
                             ->setCategory("Test");


//設定預設行高
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);

//設定列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('20');

// 加粗
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);

// 設定單元格格式
$objPHPExcel->getActiveSheet()->getCell('C2')->setValueExplicit('861391327543258', PHPExcel_Cell_DataType::TYPE_NUMERIC);

// 日期
$objPHPExcel->getActiveSheet()->setCellValue('G2', '2008-12-31');
$objPHPExcel->getActiveSheet()->getStyle('G2')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
 
// 時間戳
$time = gmmktime(0,0,0,12,31,2008); // int(1230681600)
$objPHPExcel->getActiveSheet()->setCellValue('G3', PHPExcel_Shared_Date::PHPToExcel($time));
$objPHPExcel->getActiveSheet()->getStyle('G3')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
 
// url
$objPHPExcel->getActiveSheet()->setCellValue('G11', 'blog.c1gstudio.com');
$objPHPExcel->getActiveSheet()->getCell('G11')->getHyperlink()->setUrl('http://blog.c1gstudio.com');
 
// 另一個sheet
$objPHPExcel->getActiveSheet()->setCellValue('G12', 'sheetb');
$objPHPExcel->getActiveSheet()->getCell('G12')->getHyperlink()->setUrl("sheet://'sheetb'!A1");
 
// 水準居上
$objPHPExcel->getActiveSheet()->getStyle('A9:B9')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP);
 
// 單元格換行
$objPHPExcel->getActiveSheet()->getStyle('G2:G3')->getAlignment()->setWrapText(true);
 
// 合并
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
 
 
// 隐藏D列
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false);
 
//
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setVisible(false);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setOutlineLevel(1);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setVisible(false);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setCollapsed(true);
 
// 固定第一行
$objPHPExcel->getActiveSheet()->freezePane('A2');
 
// 保護工作表
$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel');
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);
 
//設定邊框
$sharedStyle1 = new PHPExcel_Style();
$sharedStyle1->applyFromArray(
    array('borders' => array(
                                'left'        => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM)
                            )
         ));
$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "B1:B10");
 
// 建立一個新的工作表
$objWorksheet1 = $objPHPExcel->createSheet();
$objWorksheet1->setTitle('sheetb');
 
 
$objPHPExcel->setActiveSheetIndex(1);
 
 
// 建立一個圖檔
$gdImage = @imagecreatetruecolor(200, 20) or die('Cannot Initialize new GD image stream');
$textColor = imagecolorallocate($gdImage, 255, 255, 255);
imagestring($gdImage, 1, 5, 5,  'Created with PHPExcel (c1gstudio.com)', $textColor);
 
// 把建立的圖檔添加到工作表
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
$objDrawing->setName('Sample image');
$objDrawing->setDescription('Sample image');
$objDrawing->setImageResource($gdImage);
$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG);
$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(36);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
 
$objPHPExcel->setActiveSheetIndex(0);
 
// 儲存
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('testexcel'.time().'.xls');
           

原文位址:https://blog.csdn.net/lampsunny/article/details/79012173