PHP中创建和编辑Excel表格的方法

要使用纯PHP创建或编辑Excel电子表格,我们将使用PHPExcel库,它可以读写许多电子表格格式,包括xls,xlsx,ods和csv。在我们继续之前,仔细检查您的服务器上是否有PHP 5.2或更高版本以及安装了以下PHP扩展:php_zip,php_xml和php_gd2。

创建电子表格

创建电子表格是PHP应用程序中最常见的用例之一,用于将数据导出到Excel电子表格。查看以下代码,了解如何使用PHPExcel创建示例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

41

42

43

44

45

// Include PHPExcel library and create its object

require('PHPExcel.php');

 

$phpExcel = new PHPExcel;

 

// Set default font to Arial

$phpExcel->getDefaultStyle()->getFont()->setName('Arial');

 

// Set default font size to 12

$phpExcel->getDefaultStyle()->getFont()->setSize(12);

 

// Set spreadsheet properties – title, creator and description

$phpExcel ->getProperties()->setTitle("Product list");

$phpExcel ->getProperties()->setCreator("Voja Janjic");

$phpExcel ->getProperties()->setDescription("PHP Excel spreadsheet testing.");

 

// Create the PHPExcel spreadsheet writer object

// We will create xlsx file (Excel 2007 and above)

$writer = PHPExcel_IOFactory::createWriter($phpExcel, "Excel2007");

 

// When creating the writer object, the first sheet is also created

// We will get the already created sheet

$sheet = $phpExcel ->getActiveSheet();

 

// Set sheet title

$sheet->setTitle('My product list');

 

// Create spreadsheet header

$sheet ->getCell('A1')->setValue('Product');

$sheet ->getCell('B1')->setValue('Quanity');

$sheet ->getCell('C1')->setValue('Price');

 

// Make the header text bold and larger

$sheet->getStyle('A1:D1')->getFont()->setBold(true)->setSize(14);

 

// Insert product data

 

 

// Autosize the columns

$sheet->getColumnDimension('A')->setAutoSize(true);

$sheet->getColumnDimension('B')->setAutoSize(true);

$sheet->getColumnDimension('C')->setAutoSize(true);

 

// Save the spreadsheet

$writer->save('products.xlsx');

如果要下载电子表格而不是将其保存到服务器,请执行以下操作:

?

1

2

3

4

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

header('Content-Disposition: attachment;filename="file.xlsx"');

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

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

编辑现有电子表格

在PHP中编辑电子表格与创建电子表格类似:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

// Include PHPExcel library and create its object

require('PHPExcel.php');

 

// Load an existing spreadsheet

$phpExcel = PHPExcel_IOFactory::load('products.xlsx');

 

// Get the first sheet

$sheet = $phpExcel ->getActiveSheet();

 

// Remove 2 rows starting from the row 2

$sheet ->removeRow(2,2);

 

// Insert one new row before row 2

$sheet->insertNewRowBefore(2, 1);

 

// Create the PHPExcel spreadsheet writer object

// We will create xlsx file (Excel 2007 and above)

$writer = PHPExcel_IOFactory::createWriter($phpExcel, "Excel2007");

 

// Save the spreadsheet

$writer->save('products.xlsx');

准备电子表格进行打印

要准备电子表格进行打印,我们将设置纸张方向,尺寸和边距:

?

1

2

3

4

5

6

$sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);

$sheet -> getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

$sheet->getPageMargins()->setTop(1);

$sheet ->getPageMargins()->setRight(0.75);

$sheet ->getPageMargins()->setLeft(0.75);

$sheet ->getPageMargins()->setBottom(1);

将PHPExcel与Laravel一起使用

PHPExcel库也可以在Laravel框架中使用。查看以下PHP包(此处)并通过Composer安装它。完成安装步骤后,您可以使用以下代码将数据从数据库导出到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::create('Products', function($excel) {

 

        // Set the title

        $excel->setTitle('Product list');

   

        // Set the creator

        $excel->setCreator('Voja Janjic');

   

        // Set description

        $excel->setDescription('PHP Excel spreadsheet testing');

   

        $excel->sheet('Products', function($sheet) {

    

                // Get data from the database

                $products = Product::all();

   

                // Generate header row

                $sheet->row(1, array(

                        'ID',

                        'Product',

                        'Price',

                        'Quantity',    

                ));

   

                // Generate data rows

                $i = 2;

                foreach($products as $product) {   

                        $sheet->row($i, array(

                                   $product->product_id,

                                   $product->product_name,

                                   $product->price,

                                   $variety->quantity,   

                        ));

    

                        $i++;

                }

 

        });

 

})->export('xlsx');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值