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 XML备份Mysql数据库
May 27 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
yii的CURD操作实例详解
Dec 04 PHP
PHP获取一段文本显示点阵宽度和高度的方法
Mar 12 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
php实现等比例压缩图片
Jul 26 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 PHP
php实现图片压缩处理
Sep 09 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
Python fileinput模块使用实例
2015/06/03 Python
Python解析最简单的验证码
2016/01/07 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
岗位职责定义及内容
2013/11/08 职场文书
无私奉献演讲稿
2014/09/04 职场文书
医德医魂心得体会
2014/09/11 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
仰望星空观后感
2015/06/10 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
python内置进制转换函数的操作
2021/06/02 Python