怎样使用ThinkPHP6进行Excel导入和导出?

来源:undefined 2024-12-28 03:31:56 1036

随着互联网的发展,数据导入和导出的需求越来越多,尤其是在企业中。excel作为一种非常流行的办公软件,也被广泛应用于数据的存储和处理。因此,怎样使用thinkphp6进行excel的导入和导出已经成为了一个很重要的问题。本文将介绍使用thinkphp6进行excel导入和导出的步骤。

一、Excel导出

ThinkPHP6提供了一个非常方便的Excel导出工具类——PHPExcel,使用PHPExcel可以将数据导出为Excel文件,具体步骤如下:

1.安装PHPExcel类库

在composer.json文件中添加PHPExcel类库:

1

2

3

"require": {

"phpoffice/phpexcel": "^1.8"

},

登录后复制

执行命令安装PHPExcel类库:

1

composer install

登录后复制

2.创建Excel导出Controller

创建一个控制器类来处理Excel导出的请求:

1

2

3

4

5

6

7

8

9

10

11

12

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetSpreadsheet;

use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base

{

public function export()

{

// TODO: 导出Excel

}

}

登录后复制

3.构造数据源

在导出Excel之前,需要先准备好要导出的数据源。通常有两种方式来获取数据源:

(1) 从数据库中获取数据

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

namespace appdmincontroller;

use appdminmodelUser as UserModel;

use PhpOfficePhpSpreadsheetSpreadsheet;

use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base

{

public function export()

{

$users = UserModel::select()->toArray();

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue(A1, ID);

$sheet->setCellValue(B1, 姓名);

$sheet->setCellValue(C1, 性别);

$sheet->setCellValue(D1, 年龄);

$row = 2;

foreach ($users as $user) {

$sheet->setCellValue(A . $row, $user[id]);

$sheet->setCellValue(B . $row, $user[name]);

$sheet->setCellValue(C . $row, $user[gender]);

$sheet->setCellValue(D . $row, $user[age]);

$row++;

}

$writer = new Writer($spreadsheet);

$writer->save(users.xlsx);

}

}

登录后复制

(2) 从其他数据源获取数据

如果我们要将一些数据导出为Excel文件,但这些数据并不存储在数据库中,比如我们要以Excel的形式导出一些订单信息等。这时,我们可以通过其他方式来获取这些数据,例如从网络API接口中获取。

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

namespace appdmincontroller;

use GuzzleHttpClient;

use PhpOfficePhpSpreadsheetSpreadsheet;

use PhpOfficePhpSpreadsheetWriterXlsx as Writer;

class Excel extends Base

{

public function export()

{

$client = new Client();

$response = $client->get(https://api.example.com/orders);

$orders = json_decode($response->getBody()->getContents(), true);

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue(A1, 订单编号);

$sheet->setCellValue(B1, 下单人);

$sheet->setCellValue(C1, 订单金额);

$row = 2;

foreach ($orders as $order) {

$sheet->setCellValue(A . $row, $order[id]);

$sheet->setCellValue(B . $row, $order[user]);

$sheet->setCellValue(C . $row, $order[amount]);

$row++;

}

$writer = new Writer($spreadsheet);

$writer->save(orders.xlsx);

}

}

登录后复制

二、Excel导入

使用ThinkPHP6处理Excel导入也非常方便,同样使用PHPExcel类库实现,具体步骤如下:

1.安装PHPExcel类库

同Excel导出的步骤一样,需要先安装PHPExcel类库。

2.创建Excel导入Controller

创建一个控制器类来处理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

namespace appdmincontroller;

use PhpOfficePhpSpreadsheetIOFactory;

class Excel extends Base

{

public function import()

{

$file = request()->file(file);

$info = $file->validate([ext => xlsx])->move(uploads);

if ($info) {

$filename = uploads/ . $info->getSaveName();

$reader = IOFactory::createReader(Xlsx);

$spreadsheet = $reader->load($filename);

$sheet = $spreadsheet->getActiveSheet();

$highestRow = $sheet->getHighestRow();

$highestColumn = $sheet->getHighestColumn();

$data = [];

for ($row = 2; $row getCell($column . $row)->getValue();

$rowData[] = $cellValue;

}

$data[] = $rowData;

}

unlink($filename);

dump($data);

} else {

echo $file->getError();

}

}

}

登录后复制

3.上传Excel文件

我们需要在视图中添加一个上传表单,来让用户上传要导入的Excel文件。

1

登录后复制

4.处理导入数据

在导入Excel之后,我们可以通过PHPExcel提供的API获取到导入的数据。在上面的代码中,我们使用了以下代码来获取数据:

1

2

3

4

5

6

7

8

9

10

$highestRow = $sheet->getHighestRow();

$highestColumn = $sheet->getHighestColumn();

$data = [];

for ($row = 2; $row getCell($column . $row)->getValue();

$rowData[] = $cellValue;

}

$data[] = $rowData;

}

登录后复制

导入的数据即存储在$data变量中,我们可以进行后续的数据处理操作,比如将数据插入到数据库中。

综上所述,使用ThinkPHP6进行Excel导入和导出相对来说比较简单,通过使用PHPExcel类库,我们可以很方便地实现Excel文件的读取和导出。

以上就是怎样使用ThinkPHP6进行Excel导入和导出?的详细内容,更多请关注php中文网其它相关文章!

最新文章