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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值