下面就为大家介绍一下如何使用 PHP 导出带样式的 Excel,并附上两个示例说明。
1. 准备工作
首先,你需要安装 PHPExcel 库,这是一个用于在 PHP 中操作 Excel 的优秀库,它可以直接生成带样式的 Excel 文件。你可以从 PHPExcel 官方网站下载并安装。
2. 示范代码
下面是一个简单的 PHP 导出带样式的 Excel 示例代码:
<?php
require_once 'PHPExcel.php';
$objPHPExcel = new PHPExcel();
// 设置文件属性
$objPHPExcel->getProperties()
->setCreator("Your Name")
->setLastModifiedBy("Your Name")
->setTitle("Excel Document")
->setSubject("Excel Document")
->setDescription("Excel Document");
// 创建表格
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Name')
->setCellValue('B1', 'Age')
->setCellValue('C1', 'Sex');
$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
// 设置单元格样式
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('FFA0A0A0');
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 填写数据
$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Tom')->setCellValue('B2', 22)->setCellValue('C2', 'Male');
$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Lucy')->setCellValue('B3', 21)->setCellValue('C3', 'Female');
// 输出 Excel 文件
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="example.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
?>
在这段代码中,我们使用了 PHPExcel 库来创建了一个表格,设置了文件属性、单元格样式以及填写了数据,最后将生成的文件以下载的形式提供给用户。
3. 示例说明
下面,我们通过两个示例来进一步说明如何使用 PHP 导出带样式的 Excel:
示例一
我们需要在网页中提供一个按钮,当用户点击该按钮时,可以下载一个带样式的 Excel 文件,文件中包含了学生信息:姓名、年龄和性别。
在 HTML 文件中,我们可以创建一个按钮:
<button onclick="location.href='download.php'">Download Excel</button>
在 PHP 文件中,我们可以编写一个相应的 download.php 文件,当用户点击按钮时,会下载一个带样式的 Excel 文件:
<?php
require_once 'PHPExcel.php';
$objPHPExcel = new PHPExcel();
// 设置文件属性
$objPHPExcel->getProperties()
->setCreator("Your Name")
->setLastModifiedBy("Your Name")
->setTitle("Excel Document")
->setSubject("Excel Document")
->setDescription("Excel Document");
// 创建表格
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Name')
->setCellValue('B1', 'Age')
->setCellValue('C1', 'Sex');
$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
// 设置单元格样式
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('FFA0A0A0');
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A2:C2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 填写数据
$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Tom')->setCellValue('B2', 22)->setCellValue('C2', 'Male');
$objPHPExcel->getActiveSheet()->setCellValue('A3', 'Lucy')->setCellValue('B3', 21)->setCellValue('C3', 'Female');
// 输出 Excel 文件
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="example.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
?>
用户点击按钮时,会下载一个名为 example.xlsx 的 Excel 文件,文件中带有表格样式和学生信息。
示例二
假设我们有一个数据库表格 users,包含了用户信息:姓名、年龄、性别和邮箱,我们需要将这些信息导出到一个带样式的 Excel 文件中。
首先,我们需要查询数据库然后将结果填充到 Excel 中:
<?php
require_once 'PHPExcel.php';
// 连接到数据库
$conn = new mysqli('localhost', 'user', 'password', 'database');
// 查询用户信息
$sql = 'SELECT name, age, sex, email FROM users';
$result = $conn->query($sql);
$objPHPExcel = new PHPExcel();
// 设置文件属性
$objPHPExcel->getProperties()
->setCreator("Your Name")
->setLastModifiedBy("Your Name")
->setTitle("Excel Document")
->setSubject("Excel Document")
->setDescription("Excel Document");
// 创建表格
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Name')
->setCellValue('B1', 'Age')
->setCellValue('C1', 'Sex')
->setCellValue('D1', 'Email');
$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(40);
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
// 设置单元格样式
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('FFA0A0A0');
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 填写数据
$i = 2;
while ($row = $result->fetch_assoc()) {
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $row['name'])
->setCellValue('B' . $i, $row['age'])
->setCellValue('C' . $i, $row['sex'])
->setCellValue('D' . $i, $row['email']);
$i++;
}
// 输出 Excel 文件
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="users.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
?>
运行后会生成一个名为 users.xlsx 的带样式 Excel 文件。
以上是关于 PHP 导出带样式的 Excel 简单介绍,希望能对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP导出带样式的Excel示例代码 - Python技术站