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 相关文章推荐
JpGraph php柱状图使用介绍
Aug 23 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
smarty自定义函数用法示例
May 20 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
php数组遍历类与用法示例
May 24 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 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
weiphp微信公众平台授权设置
2016/01/04 PHP
<script defer> defer 是什么意思
2009/05/10 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
2016/12/22 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python super函数使用方法详解
2020/02/14 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
学习计划书怎么写
2014/09/15 职场文书
农村党员干部承诺书
2015/05/04 职场文书
立春观后感
2015/06/18 职场文书
超市员工管理制度
2015/08/06 职场文书
PHP中->和=>的意思
2021/03/31 PHP
Nginx的gzip相关介绍
2022/05/11 Servers