您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# ThinkPHP如何引用PHPExcel类库
PHPExcel是一款功能强大的PHP电子表格处理库(现已停止维护,官方推荐迁移到PhpSpreadsheet)。在ThinkPHP项目中整合PHPExcel类库可以方便地实现Excel文件的导入导出功能。本文将详细介绍在ThinkPHP中引用PHPExcel的完整流程。
## 一、准备工作
### 1. 获取PHPExcel类库
由于PHPExcel已归档,可以通过以下方式获取:
- 从GitHub仓库下载:[https://github.com/PHPOffice/PHPExcel](https://github.com/PHPOffice/PHPExcel)
- 使用Composer安装(虽然不再更新但仍可用):
```bash
composer require phpoffice/phpexcel
建议将PHPExcel放置在以下目录:
项目根目录/
├── vendor/ # Composer安装目录
├── ThinkPHP/
└── Application/
如果使用Composer安装:
1. 确保项目根目录有composer.json
2. 执行composer install
后
3. 在控制器中直接使用:
use PHPExcel;
use PHPExcel_IOFactory;
public function export() {
$objPHPExcel = new PHPExcel();
// ...其他操作
}
ThinkPHP/Library/Vendor/PHPExcel
目录Vendor('PHPExcel.PHPExcel');
$objPHPExcel = new \PHPExcel();
ThinkPHP/Library/Org/Util/
import('Org.Util.PHPExcel.PHPExcel');
$objPHPExcel = new \PHPExcel();
public function exportExcel() {
// 实例化
$objPHPExcel = new PHPExcel();
// 设置文档属性
$objPHPExcel->getProperties()
->setCreator("ThinkPHP")
->setTitle("Office文档");
// 添加数据
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'ID')
->setCellValue('B1', '姓名')
->setCellValue('C1', '年龄');
// 设置当前活动sheet
$objSheet = $objPHPExcel->getActiveSheet();
// 设置标题
$objSheet->setTitle('用户列表');
// 输出Excel
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="users.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
public function importExcel() {
$file = $_FILES['file']['tmp_name'];
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($file);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$data = [];
for($row=2; $row<=$highestRow; $row++) {
$data[] = [
'name' => $sheet->getCell('B'.$row)->getValue(),
'age' => $sheet->getCell('C'.$row)->getValue()
];
}
// 处理数据...
}
处理大文件时可能内存不足,可以添加:
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize' => '512MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
// 输出前添加头信息
header("Content-type:text/html;charset=utf-8");
// 或者对单元格内容转码
$value = iconv('gb2312', 'utf-8', $sheet->getCell('A1')->getValue());
$cell = $sheet->getCell('A1');
if(PHPExcel_Shared_Date::isDateTime($cell)) {
$time = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());
echo date('Y-m-d', $time);
}
由于PHPExcel已停止维护,建议新项目使用PhpSpreadsheet: 1. Composer安装:
composer require phpoffice/phpspreadsheet
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World!');
$writer = new Xlsx($spreadsheet);
$writer->save('hello_world.xlsx');
通过以上步骤,您可以在ThinkPHP项目中成功整合PHPExcel类库,实现强大的Excel处理功能。对于新项目,建议直接采用PhpSpreadsheet以获得更好的维护性和新特性支持。 “`
这篇文章详细介绍了在ThinkPHP中引入PHPExcel的多种方式,包含基础使用示例和常见问题解决方案,并提供了向PhpSpreadsheet迁移的建议,总字数约950字。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。