1. 程式人生 > >ThinkPHP使用 PHPExcel 處理 Excel 表格

ThinkPHP使用 PHPExcel 處理 Excel 表格

下載 PHPExcel(https://github.com/PHPOffice/PHPExcel

把下載的 zip 包解壓至 ./ThinkPHP/Library/Vendor 下

 

一、匯入 Excel 資料

控制器自定,這裡用 IndexController.class.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

<?php

namespace Home\Controller;

use Think\Controller;

 

class IndexController extends Controller {

 

    // 匯入 Excel

    public function excel() {

         

        

header('Content-type: text/html; charset=utf-8');

 

        vendor('PHPExcel.Classes.PHPExcel');

        $file './Data/example.xlsx';

 

        $Excel 

new \PHPExcel();

        // 如果excel檔案字尾名為.xls

        // vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5");

        // 如果excel檔案字尾名為.xlsx

        vendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007");

        $PHPReader new \PHPExcel_Reader_Excel2007();

 

        // 載入檔案

        $Excel $PHPReader -> load($file);

 

        //獲取表中的第一個工作表,如果要獲取第二個,把0改為1,依次類推

        $currentSheet $Excel -> getSheet(0);

        //獲取總列數

        $allColumn $currentSheet -> getHighestColumn();

        //獲取總行數

        $allRow $currentSheet -> getHighestRow();

        //迴圈獲取表中的資料,$currentRow表示當前行,從哪行開始讀取資料,索引值從0開始

        for($currentRow = 1; $currentRow <= $allRow$currentRow++) {

            //從哪列開始,A表示第一列

            for($currentColumn 'A'$currentColumn <= $allColumn$currentColumn++) {

            //資料座標

            $address $currentColumn.$currentRow;

            //讀取到的資料,儲存到陣列$arr中

            $arr[$currentRow][$currentColumn] = $currentSheet

                                                -> getCell($address)

                                                -> getValue();

            }

 

        }

        echo '<pre>';

        var_export($arr);

    }

}

輸出:

+ View Code

  

需要匯入的 Excel 檔案如下:

  

 

二、匯出 Excel

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

// 匯出 Excel

public function export() {

 

    vendor('PHPExcel.Classes.PHPExcel');

    $Excel new \PHPExcel();

 

    $arr array ( 1 => array 'A' => '分公司名稱''B' => '姓名''C' => '金額', ), 2 => array 'A' => 'A分公司''B' => '趙娟''C' => 1100, ), 3 => array 'A' => 'B分公司''B' => '孔堅''C' => 1100, ), 4 => array 'A' => 'C分公司''B' => '王華髮''C' => 1300, ), 5 => array 'A' => 'C分公司''B' => '趙輝''C' => 700, ), 6 => array 'A' => 'B分公司''B' => '華髮''C' => 1400, ), 7 => array 'A' => 'A分公司''B' => '趙德國''C' => 700, ), 8 => array 'A' => 'B分公司''B' => '沈芳虹''C' => 500, ), 9 => array 'A' => 'C分公司''B' => '周紅玉''C' => 1100, ), 10 => array 'A' => 'A分公司''B' => '施芬芳''C' => 800, ), 11 => array 'A' => 'A分公司''B' => '蔣國建''C' => 1100, ), 12 => array 'A' => 'B分公司''B' => '錢毅''C' => 1400, ), 13 => array 'A' => 'B分公司''B' => '陳華惠''C' => 1200, ), 14 => array 'A' => 'C分公司''B' => '曹香''C' => 1400, ), 15 => array 'A' => 'A分公司''B' => '鄭紅妙''C' => 600, ), 16 => array 'A' => 'A分公司''B' => '王巨集仁''C' => 800, ), 17 => array 'A' => 'C分公司''B' => '何丹美''C' => 1300, ), );

 

    // 設定

    $Excel

        ->getProperties()

        ->setCreator("dee")

        ->setLastModifiedBy("dee")

        ->setTitle("資料EXCEL匯出")

        ->setSubject("資料EXCEL匯出")

        ->setDescription("資料EXCEL匯出")

        ->setKeywords("excel")

        ->setCategory("result file");

 

    foreach($arr as $key => $val) { // 注意 key 是從 0 還是 1 開始,此處是 0

        // $num = $key + 1;

        $Excel ->setActiveSheetIndex(0)

             //Excel的第A列,uid是你查出陣列的鍵值,下面以此類推

              ->setCellValue('A'.$key$val['A'])    

              ->setCellValue('B'.$key$val['B'])

              ->setCellValue('C'.$key$val['C']);

    }

 

    $Excel->getActiveSheet()->setTitle('export');

    $Excel->setActiveSheetIndex(0);

    $name='example_export.xlsx';

 

    header('Content-Type: application/vnd.ms-excel');

    header('Content-Disposition: attachment; filename='.$name);

    header('Cache-Control: max-age=0');

 

    $ExcelWriter = \PHPExcel_IOFactory::createWriter($Excel'Excel2007');

    $ExcelWriter->save('php://output');

    exit;       

}

 

匯出的 example_export.xlsx 如圖:

  

 

右鍵 -- 屬性:

 

 

 

 

 

 

 轉載自:https://www.cnblogs.com/dee0912/p/5460072.html