经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
PHP中创建和编辑Excel表格的方法
来源:jb51  时间:2018/9/25 19:04:37  对本文有异议

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

创建电子表格

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

  1. // Include PHPExcel library and create its object
  2. require('PHPExcel.php');
  3.  
  4. $phpExcel = new PHPExcel;
  5.  
  6. // Set default font to Arial
  7. $phpExcel->getDefaultStyle()->getFont()->setName('Arial');
  8.  
  9. // Set default font size to 12
  10. $phpExcel->getDefaultStyle()->getFont()->setSize(12);
  11.  
  12. // Set spreadsheet properties – title, creator and description
  13. $phpExcel ->getProperties()->setTitle("Product list");
  14. $phpExcel ->getProperties()->setCreator("Voja Janjic");
  15. $phpExcel ->getProperties()->setDescription("PHP Excel spreadsheet testing.");
  16.  
  17. // Create the PHPExcel spreadsheet writer object
  18. // We will create xlsx file (Excel 2007 and above)
  19. $writer = PHPExcel_IOFactory::createWriter($phpExcel, "Excel2007");
  20.  
  21. // When creating the writer object, the first sheet is also created
  22. // We will get the already created sheet
  23. $sheet = $phpExcel ->getActiveSheet();
  24.  
  25. // Set sheet title
  26. $sheet->setTitle('My product list');
  27.  
  28. // Create spreadsheet header
  29. $sheet ->getCell('A1')->setValue('Product');
  30. $sheet ->getCell('B1')->setValue('Quanity');
  31. $sheet ->getCell('C1')->setValue('Price');
  32.  
  33. // Make the header text bold and larger
  34. $sheet->getStyle('A1:D1')->getFont()->setBold(true)->setSize(14);
  35.  
  36. // Insert product data
  37.  
  38.  
  39. // Autosize the columns
  40. $sheet->getColumnDimension('A')->setAutoSize(true);
  41. $sheet->getColumnDimension('B')->setAutoSize(true);
  42. $sheet->getColumnDimension('C')->setAutoSize(true);
  43.  
  44. // Save the spreadsheet
  45. $writer->save('products.xlsx');
  46.  

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

  1. header('Content-Type: application/vnd.ms-excel');
  2. header('Content-Disposition: attachment;filename="file.xlsx"');
  3. header('Cache-Control: max-age=0');
  4. $writer->save('php://output');

编辑现有电子表格

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

  1. // Include PHPExcel library and create its object
  2. require('PHPExcel.php');
  3.  
  4. // Load an existing spreadsheet
  5. $phpExcel = PHPExcel_IOFactory::load('products.xlsx');
  6.  
  7. // Get the first sheet
  8. $sheet = $phpExcel ->getActiveSheet();
  9.  
  10. // Remove 2 rows starting from the row 2
  11. $sheet ->removeRow(2,2);
  12.  
  13. // Insert one new row before row 2
  14. $sheet->insertNewRowBefore(2, 1);
  15.  
  16. // Create the PHPExcel spreadsheet writer object
  17. // We will create xlsx file (Excel 2007 and above)
  18. $writer = PHPExcel_IOFactory::createWriter($phpExcel, "Excel2007");
  19.  
  20. // Save the spreadsheet
  21. $writer->save('products.xlsx');
  22.  

准备电子表格进行打印

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

  1. $sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
  2. $sheet -> getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
  3. $sheet->getPageMargins()->setTop(1);
  4. $sheet ->getPageMargins()->setRight(0.75);
  5. $sheet ->getPageMargins()->setLeft(0.75);
  6. $sheet ->getPageMargins()->setBottom(1);

将PHPExcel与Laravel一起使用

PHPExcel库也可以在Laravel框架中使用。查看以下PHP包(此处)并通过Composer安装它。完成安装步骤后,您可以使用以下代码将数据从数据库导出到Excel电子表格中:

  1. Excel::create('Products', function($excel) {
  2.  
  3. // Set the title
  4. $excel->setTitle('Product list');
  5. // Set the creator
  6. $excel->setCreator('Voja Janjic');
  7. // Set description
  8. $excel->setDescription('PHP Excel spreadsheet testing');
  9. $excel->sheet('Products', function($sheet) {
  10. // Get data from the database
  11. $products = Product::all();
  12. // Generate header row
  13. $sheet->row(1, array(
  14. 'ID',
  15. 'Product',
  16. 'Price',
  17. 'Quantity',
  18. ));
  19. // Generate data rows
  20. $i = 2;
  21. foreach($products as $product) {
  22. $sheet->row($i, array(
  23. $product->product_id,
  24. $product->product_name,
  25. $product->price,
  26. $variety->quantity,
  27. ));
  28. $i++;
  29. }
  30.  
  31. });
  32.  
  33. })->export('xlsx');

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号