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


Posted in PHP onSeptember 13, 2018

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

创建电子表格

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

// 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');

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

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中编辑电子表格与创建电子表格类似:

// 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');

准备电子表格进行打印

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

$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电子表格中:

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');
PHP 相关文章推荐
第一节--面向对象编程
Nov 16 PHP
简单的PHP图片上传程序
Mar 27 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php ios推送(代码)
Jul 01 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
项目中应用Redis+Php的场景
May 22 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
php pdo连接数据库操作示例
Nov 18 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 #PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 #PHP
详解php用static方法的原因
Sep 12 #PHP
php实现数字补零的方法总结
Sep 12 #PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 #PHP
Yii2结合Workerman的websocket示例详解
Sep 10 #PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 #PHP
You might like
风格模板初级不完全修改教程
2006/10/09 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
纯JS实现轮播图
2017/02/22 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
Mac下安装vue
2018/04/11 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
Python生成随机验证码代码实例解析
2020/06/09 Python
荟萃全球保健品:维他购
2018/05/09 全球购物
酒吧总经理岗位职责
2013/12/10 职场文书
《威尼斯的小艇》教学反思
2014/02/17 职场文书
离婚财产分配协议书
2014/10/21 职场文书
国王的演讲观后感
2015/06/03 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android