前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >phpoffice/phpexcel 导出Excel表格数据

phpoffice/phpexcel 导出Excel表格数据

作者头像
很酷的站长
发布2023-01-16 09:34:08
1.9K0
发布2023-01-16 09:34:08
举报
1. 下载扩展包

代码语言:javascript
复制
composer require phpoffice/phpexcel
2. 导出数据封装

在TP中使用时可以将以下类文件放入 extend 目录

代码语言:javascript
复制
<?php
/**
* 导出数据
* PHP7.2版本以下推荐使用 phpoffice/phpexcel
* PHP7.2版本以上推荐使用 phpoffice/phpspreadsheet
* composer require phpoffice/phpexcel
*/
class Excel
{
/**
* 导出数据使用示例
*/
public static function exportDemo()
{
########## 使用示例 ##########
// 表头
$header = [
'id', '姓名', '手机号'
];
// 表格数据
$data = [
[
'id' => '1',
'name' => '张三',
'mobile' => 15037843784,
],
[
'id' => 2,
'name' => '李四',
'mobile' => 15510191019,
],
];
// 设置为字符串
$stringColumn = ['A', 'B'];
// 设置列宽
$colWidth = [
'C' => 20,
];
self::export($header, $data, $colWidth, $stringColumn, [
'filename' => '用户信息',
'title' => '示例表格',
]);
}
/**
* 导出Excel表格
* 应用场景:导出订单,导出用户信息
* @param array $header 表头
* @param array $data 表格数据
* @param array $colWidth 设置列宽
* @param array $extra 附加数据
*/
public static function export($header, $data, $colWidth, $extra = [])
{
$objPHPExcel = new PHPExcel;
$activeSheet = $objPHPExcel->setActiveSheetIndex(0);
// 默认单元格内容左对齐
$activeSheet
->getDefaultStyle()
->getAlignment()
->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
// 设置表格文件名
if ( ! empty($extra['filename']) ) {
// 文件名
$filename = $extra['filename'];
} else {
// 文件名
$filename = '导出示例' . date('Y年m月d日H时i分s秒');
}
// 设置工作薄标题
if ( ! empty($extra['title']) ) {
// 参数要求必须为字符串
$activeSheet->setTitle((string)$extra['title']);
}
// 获取 'A' 的 ASCII值
$key = ord('A');
foreach ($header as $v) {
// 将 ASCII 值转为字符
// 示例: A,B,C,D
$colum = chr($key);
if ( ! empty($colWidth[$colum]) ) {
$activeSheet->getColumnDimension($colum)->setWidth($colWidth[$colum]);
}
// 单元格写入数据
$activeSheet->setCellValue($colum . '1', $v);
$key += 1;
}
// 从第二行写入数据
$column = 2;
foreach ($data as $rows) { // 行写入
$span = ord("A");
foreach ($rows as $keyName => $value) { // 列写入
// 解决php导出excel 长数字变成科学计数法
$activeSheet
->getStyle(chr($span) . $column)
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
if ( in_array(chr($span), $stringColumn) ) {
// 设置为字符串文本 处理数字过长变为科学计数法和身份证号后几位变为0的情况
$objActSheet->setCellValue(chr($span) . $column, $value . ' ');
} else {
$objActSheet->setCellValue(chr($span) . $column, $value);
}
$span++;
}
$column++;
}
// Excel2003 后缀 .xls
// MIME 协议,文件的类型,不设置,会默认html
// header('Content-Type: application/vnd.ms-excel');
// // MIME 协议的扩展
// header('Content-Disposition:attachment;filename=' . $filename . '.xls');
// // 缓存控制
// header('Cache-Control:max-age=0');
// $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
// Excel2007 后缀 .xlsx
// MIME 协议,文件的类型,不设置,会默认html
header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// MIME 协议的扩展
header('Content-Disposition:attachment;filename=' . $filename . '.xlsx');
// 缓存控制
header('Cache-Control:max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//文件通过浏览器下载
$objWriter->save('php://output');
}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 下载扩展包
  • 2. 导出数据封装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档