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 相关文章推荐
随时给自己贴的图片加文字的php代码
Mar 08 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
php+mysql实现数据库随机重排实例
Oct 17 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
Jan 21 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
Linux下 php7安装redis的方法
Nov 01 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 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
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python算法应用实战之栈详解
2017/02/04 Python
python如何修改装饰器中参数
2018/03/20 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
python 写一个文件分发小程序
2020/12/05 Python
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
《第一次抱母亲》教学反思
2014/04/16 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python