以下是“基于PHP导出Excel的小经验 完美解决乱码问题”的完整攻略:
简介
Excel是一个非常常用的办公工具,很多时候我们需要用程序来导出Excel文件。本文旨在分享一个基于PHP导出Excel的小经验,并解决导出Excel文件时遇到的乱码问题。
步骤
准备工作
- 安装PHP,建议使用PHP7及以上版本
- 安装PHPExcel库
创建Excel文件
- 引入PHPExcel库中的Excel类
php
require_once 'PHPExcel.php'; - 创建一个PHPExcel对象,并指定需要导出的Excel文件类型,如xlsx
php
$objPHPExcel = new PHPExcel();
$fileType = 'Excel2007'; - 设置Excel文件的属性,包括标题、作者等
php
$objPHPExcel->getProperties()
->setTitle('Export Excel with PHP')
->setSubject('Example PHPExcel')
->setDescription('Excel file generated with PHPExcel'); - 添加Excel文件的表头
php
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'ID')
->setCellValue('B1', 'Name')
->setCellValue('C1', 'Age'); - 添加Excel文件的数据
```php
$data = array(
array('1', 'Alice', 18),
array('2', 'Bob', 20),
array('3', 'Charlie', 22),
);
$count = 2;
foreach ($data as $row) {
$objPHPExcel->getActiveSheet()
->setCellValue('A' . $count, $row[0])
->setCellValue('B' . $count, $row[1])
->setCellValue('C' . $count, $row[2]);
$count++;
}
6. 导出Excel文件
php
$filename = 'example.xlsx';
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"$filename\"");
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->save('php://output');
```
解决乱码问题
- 将PHP代码文件保存为UTF-8编码的文件
- 在Excel文件导出前设置编码格式为UTF-8
```php
$objPHPExcel->getActiveSheet()->setTitle('Sheet1');
$objPHPExcel->setActiveSheetIndex(0);
$filename = 'example.xlsx';
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"$filename\"");
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
//设置编码格式为UTF-8
$output = iconv('UTF-8', 'GB2312//IGNORE', $filename);
$objWriter->save('php://output');
```
示例说明
示例1:添加多张Sheet表
如果需要在同一个Excel文件中添加多张Sheet表,可以通过以下方式完成:
//创建一个PHPExcel对象
$objPHPExcel = new PHPExcel();
//设置表头等信息
//创建一个新的sheet表
$objPHPExcel->createSheet();
$objPHPExcel->setActiveSheetIndex(1);
$objPHPExcel->setTitle('Sheet2');
//添加表头等信息
//切换回第一张sheet表
$objPHPExcel->setActiveSheetIndex(0);
//导出Excel文件
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->save($filename);
上述代码添加了一张名为Sheet2的Sheet表,并在导出Excel文件时同时导出了两张Sheet表。
示例2:格式化Excel表格
如果需要在导出的Excel文件中设置单元格的格式,可以通过以下方式完成:
$objPHPExcel->getActiveSheet()
->getStyle('A2:C' . $count)
->getAlignment()
->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置水平居中
$objPHPExcel->getActiveSheet()
->getStyle('A2:C' . $count)
->getAlignment()
->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //设置垂直居中
$objPHPExcel->getActiveSheet()
->getStyle('A1:C1')
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setARGB('FFFF0000'); //设置表头的填充颜色
上述代码设置了单元格的水平居中、垂直居中和表头的填充颜色。可以根据需要,设置更多的Excel表格格式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于PHP导出Excel的小经验 完美解决乱码问题 - Python技术站