PHPExcel經常使用方法小結

摘要: PHPExcel 是用來操做Office Excel 文檔的一個PHP類庫,它基於微軟的OpenXML標準和PHP語言。能夠使用它來讀取、寫入不一樣格式的電子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOf ...
PHPExcel 是用來操做Office Excel 文檔的一個PHP類庫,它基於微軟的OpenXML標準和PHP語言。能夠使用它來讀取、寫入不一樣格式的電子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。
要求:
PHP 5.2.0 版本及以上
PHP extension php_zip 開啓 (若是你須要使用 PHPExcel 來操做 .xlsx .ods or .gnumeric 文件)
PHP extension php_xml 開啓
PHP extension php_gd2 開啓(選填, 若是須要計算準確的列寬須要開啓此擴展)
[代碼]php代碼:
view sourceprint?
001
public function actionGetexcel() {
002
        $objectPHPExcel = new PHPExcel();
003
  
004
        //設置文檔基本屬性 
005
        $objProps = $objectPHPExcel->getProperties();
006
        $objProps->setCreator('ls'); //做者
007
        $objProps->setLastModifiedBy('ls'); //修訂
008
        $objProps->setTitle("Office XLS Document"); //標題
009
        $objProps->setSubject("Office XLS Document"); //主題
010
        $objProps->setDescription(""); //備註
011
        $objProps->setKeywords("office excel"); //標記
012
        $objProps->setCategory(""); //類別
013
        //設置當前的sheet索引,用於後續的內容操做。 
014
        //通常只有在使用多個sheet的時候才須要顯示調用。 
015
        //缺省狀況下,PHPExcel會自動建立第一個sheet被設置SheetIndex=0 
016
        $objectPHPExcel->setActiveSheetIndex(0);
017
  
018
        //每頁條數
019
        $page_size = 20;
020
        //數據的取出
021
        $model = Company::model();
022
        $model->unsetAttributes();  // clear any default values 
023
        $model->group_id = 7;
024
        $dataProvider = $model->search();
025
  
026
        $dataProvider->setPagination(false);
027
        $data = $dataProvider->getData(); //數據
028
        $count = $dataProvider->getTotalItemCount(); //總條數
029
        //總頁數的算出
030
        $page_count = (int) ($count / $page_size) + 1;
031
        $current_page = 0;
032
  
033
        $n = 0;
034
        $spm = 0;
035
        foreach ($data as $product) {
036
  
037
            if ($n % $page_size === 0) {
038
                if ($n) {
039
                    $objectPHPExcel->createSheet();
040
                    $current_page = $current_page + 1;
041
                    $spm = 0;
042
                }
043
                //報表頭的輸出
044
                $objectPHPExcel->getActiveSheet()->mergeCells('B1:G1');
045
                $objectPHPExcel->getActiveSheet()->setCellValue('B1', '平臺供應商');
046
  
047
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('B2', '平臺供應商');
048
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('B2', '平臺供應商');
049
                $objectPHPExcel->setActiveSheetIndex($current_page)->getStyle('B1')->getFont()->setSize(24);
050
                $objectPHPExcel->setActiveSheetIndex($current_page)->getStyle('B1')
051
                        ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
052
  
053
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('B2', '日期:' . date("Y年m月j日"));
054
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('G2', '第' . ($current_page + 1) . '/' . $page_count . '頁');
055
                $objectPHPExcel->setActiveSheetIndex($current_page)->getStyle('G2')
056
                        ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
057
  
058
                //表格頭的輸出
059
                $objectPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5);
060
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('B3', '公司id');
061
                $objectPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(6.5);
062
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('C3', '名稱');
063
                $objectPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(17);
064
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('D3', '分組');
065
                $objectPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(22);
066
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('E3', '電話');
067
                $objectPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
068
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('F3', '建立時間');
069
                $objectPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
070
                $objectPHPExcel->setActiveSheetIndex($current_page)->setCellValue('G3', '地區');
071
                $objectPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
072
  
073
                //設置居中
074
                $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')
075
                        ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
076
  
077
                //設置邊框
078
                $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')
079
                        ->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
080
                $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')
081
                        ->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
082
                $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')
083
                        ->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
084
                $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')
085
                        ->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
086
                $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')
087
                        ->getBorders()->getVertical()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
088
  
089
                //設置顏色
090
                $objectPHPExcel->getActiveSheet()->getStyle('B3:G3')->getFill()
091
                        ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('FF66CCCC');
092
            }
093
  
094
            //由PHPExcel根據傳入內容自動判斷單元格內容類型  setCellValue('A1', '字符串內容'); 
095
            //顯式指定內容類型  setCellValueExplicit('A1', '字符串內容', PHPExcel_Cell_DataType::TYPE_STRING)
096
  
097
            //明細的輸出
098
            $objectPHPExcel->getActiveSheet()->setCellValueExplicit('B' . ($spm + 4), $product->com_id, PHPExcel_Cell_DataType::TYPE_STRING);
099
            $objectPHPExcel->getActiveSheet()->setCellValueExplicit('C' . ($spm + 4), $product->com_name, PHPExcel_Cell_DataType::TYPE_STRING);
100
            $objectPHPExcel->getActiveSheet()->setCellValueExplicit('D' . ($spm + 4), $product->group_id,PHPExcel_Cell_DataType::TYPE_STRING);
101
            $objectPHPExcel->getActiveSheet()->setCellValueExplicit('E' . ($spm + 4), $product->com_phone,PHPExcel_Cell_DataType::TYPE_STRING);
102
            $objectPHPExcel->getActiveSheet()->setCellValueExplicit('F' . ($spm + 4), $product->create_time,PHPExcel_Cell_DataType::TYPE_STRING);
103
            $objectPHPExcel->getActiveSheet()->setCellValueExplicit('G' . ($spm + 4), $product->region_name,PHPExcel_Cell_DataType::TYPE_STRING);
104
            //設置邊框
105
            $currentRowNum = $spm + 4;
106
            $objectPHPExcel->getActiveSheet()->getStyle('B' . ($spm + 4) . ':G' . $currentRowNum)
107
                    ->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
108
            $objectPHPExcel->getActiveSheet()->getStyle('B' . ($spm + 4) . ':G' . $currentRowNum)
109
                    ->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
110
            $objectPHPExcel->getActiveSheet()->getStyle('B' . ($spm + 4) . ':G' . $currentRowNum)
111
                    ->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
112
            $objectPHPExcel->getActiveSheet()->getStyle('B' . ($spm + 4) . ':G' . $currentRowNum)
113
                    ->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
114
            $objectPHPExcel->getActiveSheet()->getStyle('B' . ($spm + 4) . ':G' . $currentRowNum)
115
                    ->getBorders()->getVertical()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
116
            $n = $n + 1;
117
            $spm +=1;
118
        }
119
  
120
        //設置分頁顯示
121
        // $objectPHPExcel->getActiveSheet()->setBreak( 'I55' , PHPExcel_Worksheet::BREAK_ROW );
122
        //$objectPHPExcel->getActiveSheet()->setBreak( 'I10' , PHPExcel_Worksheet::BREAK_COLUMN );
123
        $objectPHPExcel->getActiveSheet()->getPageSetup()->setHorizontalCentered(true);
124
        $objectPHPExcel->getActiveSheet()->getPageSetup()->setVerticalCentered(true);
125
  
126
  
127
        ob_end_clean();
128
        ob_start();
129
  
130
        header('Content-Type : application/vnd.ms-excel');
131
        header('Content-Disposition:attachment;filename="' . '供應商列表-TEST' . date("Y年m月j日") . '.xls"');
132
        $objWriter = PHPExcel_IOFactory::createWriter($objectPHPExcel, 'Excel5');
133
        $objWriter->save('php://output');
134
    }
相關文章
相關標籤/搜索