namespace frontendcontrollers;

use Yii;

use yiiwebController;

use PhpOfficePhpSpreadsheetSpreadsheet;

use PhpOfficePhpSpreadsheetIOFactory;

use PhpOfficePhpSpreadsheetStyleBorder;

/**

* 导出Excel

*/

class ExcelController extends Controller

{

public function actionIndex($id=0)

{

$data =

[
   ['title_A' => 'A', 'title_B' => 'B', 'title_C' => 'C', 'title_D' => 'D', 'title_E' => 'E', 'title_F' => 'F', 'title_G' => 'G'],
   ['title_A' => 'A1', 'title_B' => 'B1', 'title_C' => 'C1', 'title_D' => 'D1', 'title_E' => 'E1', 'title_F' => 'F1', 'title_G' => 'G1'],
   ['title_A' => 'A2', 'title_B' => 'B2', 'title_C' => 'C2', 'title_D' => 'D2', 'title_E' => 'E2', 'title_F' => 'F2', 'title_G' => 'G2'],
];

$data2 =

[
   ['title_A' => 'A', 'title_B' => 'B', 'title_C' => 'C', 'title_D' => 'D', 'title_E' => 'E', 'title_F' => 'F', 'title_G' => 'G'],
   ['title_A' => 'A1', 'title_B' => 'B1', 'title_C' => 'C1', 'title_D' => 'D1', 'title_E' => 'E1', 'title_F' => 'F1', 'title_G' => 'G1'],
   ['title_A' => 'A2', 'title_B' => 'B2', 'title_C' => 'C2', 'title_D' => 'D2', 'title_E' => 'E2', 'title_F' => 'F2', 'title_G' => 'G2'],
];

$data3 =

[
   ['title_A' => 'A', 'title_B' => 'B', 'title_C' => 'C', 'title_D' => 'D', 'title_E' => 'E', 'title_F' => 'F', 'title_G' => 'G'],
   ['title_A' => 'A1', 'title_B' => 'B1', 'title_C' => 'C1', 'title_D' => 'D1', 'title_E' => 'E1', 'title_F' => 'F1', 'title_G' => 'G1'],
   ['title_A' => 'A2', 'title_B' => 'B2', 'title_C' => 'C2', 'title_D' => 'D2', 'title_E' => 'E2', 'title_F' => 'F2', 'title_G' => 'G2'],
];

$title = ['类别', '子类', '需求编号', '安全需求', '建议采用', '确认是否采用', '不采用原因']; $title2 = ['类别', '子类', '需求编号', '安全需求', '建议采用', '确认是否采用', '不采用原因']; $title3 = ['需求编号', '需求详解']; // Create new Spreadsheet object $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet()->setTitle('基础安全需求'); $sheet2 = $spreadsheet->createSheet(1)->setTitle('场景安全需求'); $sheet3 = $spreadsheet->createSheet(2)->setTitle('安全需求说明'); // 方法一,使用 setCellValueByColumnAndRow //设置单元格内容 //设置表头 foreach ($title as $key => $value) { // 单元格内容写入 $sheet->setCellValueByColumnAndRow($key + 1, 1, $value); } foreach ($title2 as $key => $value) { $sheet2->setCellValueByColumnAndRow($key + 1, 1, $value); } foreach ($title3 as $key => $value) { $sheet3->setCellValueByColumnAndRow($key + 1, 1, $value); } // sheet1 基础安全需求 $row = 2; // 从第二行开始 foreach ($data as $item) { $column = 1; foreach ($item as $value) { // 单元格内容写入 $sheet->setCellValueByColumnAndRow($column, $row, $value); $column++; } $row++; } // sheet2 场景安全需求 $rowOfSheet2 = 2; // 从第二行开始 foreach ($data2 as $item) { $column = 1; foreach ($item as $value) { // 单元格内容写入 $sheet2->setCellValueByColumnAndRow($column, $rowOfSheet2, $value); $column++; } $rowOfSheet2++; } // sheet3 安全需求详解 $rowOfSheet3 = 2; // 从第二行开始 foreach ($data3 as $item) { $column = 1; foreach ($item as $value) { // 单元格内容写入 $sheet3->setCellValueByColumnAndRow($column, $rowOfSheet3, $value); $column++; } $rowOfSheet3++; } //设定样式 //所有sheet的表头样式 加粗 $font = [ 'font' => [ 'bold' => true, ], ]; //所有sheet的内容样式 加黑色边框 $borders = [ 'borders' => [ 'allBorders' => [ 'borderStyle' => Border::BORDER_THIN, 'color' => ['argb' => 'black'], ], ], ]; $sheet->getStyle('A1:G1')->applyFromArray($font); $sheet->getColumnDimension('C')->setWidth(12); $sheet->getColumnDimension('D')->setWidth(101); $sheet->getColumnDimension('F')->setWidth(25); $sheet->getColumnDimension('G')->setWidth(25); $sheet2->getStyle('A1:G1')->applyFromArray($font); $sheet2->getColumnDimension('C')->setWidth(12); $sheet2->getColumnDimension('D')->setWidth(101); $sheet2->getColumnDimension('F')->setWidth(25); $sheet2->getColumnDimension('G')->setWidth(25); $sheet3->getStyle('A1:B1')->applyFromArray($font); $sheet3->getColumnDimension('A')->setWidth(15); $sheet3->getColumnDimension('B')->setWidth(130); $sheet->getStyle('A1:G' . ($row - 1))->applyFromArray($borders); $sheet2->getStyle('A1:G' . ($rowOfSheet2 - 1))->applyFromArray($borders); $sheet3->getStyle('A1:B' . ($rowOfSheet3 - 1))->applyFromArray($borders)->getAlignment()->setWrapText(true); // 方法二,使用 setCellValue //表头 //设置单元格内容 /*$titCol = 'A'; foreach ($title as $key => $value) { // 单元格内容写入 $sheet->setCellValue($titCol . '1', $value); $titCol++; } $row = 2; // 从第二行开始 foreach ($data as $item) { $dataCol = 'A'; foreach ($item as $value) { // 单元格内容写入 $sheet->setCellValue($dataCol . $row, $value); $dataCol++; } $row++; }*/ // Redirect output to a client’s web browser (Xlsx) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="安全需求.xlsx"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output'); exit; } }

php Spreadsheet 导出,使用PhpSpreadsheet导出Excel文件相关推荐

  1. php mysql生成excel文件,PHP导出MySQL数据到Excel文件简单示例

    这篇文章主要为大家详细介绍了PHP导出MySQL数据到Excel文件简单示例,具有一定的参考价值,可以用来参考一下. 对phpPHP导出MySQL数据到Excel文件简单示例感兴趣的小伙伴,下面一起跟 ...

  2. anki 插入表格_Anki之导出卡牌组到Excel文件

    最近有导出Anki卡牌组到Excel文件的需要,查到了这个教程,Anki插件--导出卡牌到Excel文件-LearnHacks,但结果并不令人满意,所导出的Excel文件只有一列,所选中的卡片字段全部 ...

  3. POI3.8解决导出大数据量excel文件时内存溢出的问题

    POI3.8解决导出大数据量excel文件时内存溢出的问题 参考文章: (1)POI3.8解决导出大数据量excel文件时内存溢出的问题 (2)https://www.cnblogs.com/feng ...

  4. 通过Java批量导出带有图片的Excel文件数据

    批量导出带有图片的Excel文件 一.思路解析 二.关键源码 三.总结 Java通过POI或者一些常见的Excel工具类能够轻易导出后台的结构化数据,但是最近面临一个新需求,需要将对应记录数据和图片网 ...

  5. POI动态导出多层表头的EXCEL文件

    POI动态导出多层表头的EXCEL文件 表格表头导出 单行表头 多行表头 以前接触过一个很古老的导出Excel,实现的逻辑是先声明一个导出的Excel模板,模板里报表的表头名称和顺序是固定的,这样执行 ...

  6. php按列导出excel2010,excel2010官方下载 免费完整版 PHP导出MySQL数据到Excel文件fputcsv...

    这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件. 复制代码 代码如下: // 输出Excel文件头,可把user.csv换成你要的文件名 header('Conten ...

  7. PHP通过phpspreadsheet读取Excel文件

    PHP通过phpspreadsheet读取Excel文件 安装 通过 Composer 安装 composer require phpoffice/phpspreadsheet 读文件 三行代码解决E ...

  8. php Spreadsheet Csv,基于 PhpSpreadsheet 简单 Excel 导入导出

    GitHub 安装 composer require jianyan74/php-excel 引入 use jianyan\excel\Excel; Demo 目前只支持文字.函数.选择.日期转换 / ...

  9. pandas之数据文件导入和导出(python读取.csv,.txt,excel文件(.xlsx)以及导出为.csv、excel文件)

    文件类型:.csv,.txt,.xlsx .csv文件,一行即为数据表的一行.生成数据表字段用逗号隔开(英文的逗号!!!!).csv文件用记事本和excel都能打开,用记事本打开显示逗号,用excel ...

  10. Java后端实现Excel导出,及添加Excel文件标题样式

    简单Java实现Excel文件导出 Java导出要在action层(controller层)中操作 需要到的jar包: 后端代码: 后面两个函数都是设置Excel文件里的标题样式,专注第一个方法就可以 ...

最新文章

  1. ​如何保护Java程序
  2. Xamarin Essentials教程陀螺仪Gyroscope
  3. python apache配置_Apache运行Python的配置
  4. 8.MySQL 数据操作 DML
  5. poj3249Test for Job(记忆化搜索)
  6. 帆软发布大数据直连引擎FineDirect,对焦大数据BI
  7. easyUI 的combobox如何获取除valueField和textField外的三个值
  8. [数学建模]数学规划模型
  9. Panabit应用层流量管理系统
  10. vsto mysql_VSTO–Visio | 学步园
  11. 饥荒正版怎么创建专用服务器,饥荒联机版如何创建本地服务器 创建本地服务器步骤...
  12. 楼梯计算机公式,楼梯踏步数计算公式是什么
  13. Fibonacci数列(斐波那契数列)
  14. Influx Sql系列教程三:measurement 表
  15. 毕业后5年,我终于变成了月薪13000的软件测试工程师
  16. 协议实例说明--租房
  17. Java学习——类和对象(上)
  18. Python学习笔记:数据可视化(一)
  19. 飞飞影视系统php版怎么进,飞飞影视系统PHPVOD搬家图文教程
  20. hackthebox- Arctic (考点:ColdFusion安全/windows)

热门文章

  1. Rokid发布超低延迟AR眼镜手势空间识别算法
  2. KeePass Password Safe(互联网密码管理器软件)官方中文版V2.48.1 | 密码管理工具哪个好用?
  3. 微信小程序云开发———云数据库
  4. Win10开启热点共享后断网怎么解决?
  5. 三星手机翻新机的识别
  6. 阴阳师可以转系统的服务器有哪些,阴阳师怎么转系统 阴阳师跨系统角色转移服务介绍...
  7. 单播,组播,广播概念
  8. 【IoT】产品设计:用实际案例,手把手教你写BRD(商业需求文档)
  9. AI艺术奇幻之旅的诞生
  10. 官方新动作!老子云3D开发SDK又更新:新增3D测量,路径动画