一. 基本使用

<?phpuse PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Helper\Html as HtmlHelper;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;$spreadsheet = new Spreadsheet(); //新建文件
// $spreadSheet = IOFactory::load($inputFileName); //载入文件
$sheet = $spreadsheet->getActiveSheet();
//$spreadSheet->getProperties()->setCreator("hellow");//设置作者
//$spreadSheet->getSheetCount();//工作表总数
//$spreadSheet->getSheetNames();//工作表名数组
//$sheet = $spreadSheet->getSheetByName('Sheet1');//根据表名获取工作表
//$sheet = $spreadSheet->getSheet(0);//根据表索引获取工作表
//$sheet = $spreadSheet->setActiveSheetIndex(0);//切换当前工作表
//$sheet = $spreadsheet->setActiveSheetIndexByName('DataSheet')//设置打印选项
$sheet->getPageSetup()->setFitToWidth(1);
$sheet->getPageSetup()->setFitToHeight(0);
$sheet->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE)->setPaperSize(PageSetup::PAPERSIZE_A4);;
$sheet->getPageMargins()->setTop(1)->setRight(0.75)->setLeft(0.75)->setBottom(1);
$sheet->getPageSetup()->setHorizontalCentered(true)->setVerticalCentered(false);
$sheet->setPrintGridlines(true);
$sheet->getPageSetup()->setPrintArea('A1:E5,G4:M20');//设置缩放
$sheet->getSheetView()->setZoomScale(75);
//设置worksheet的颜色
$sheet->getTabColor()->setRGB('FF0000');
//设置worksheet名字
$sheet->setTitle('sheet 1');//设置默认样式
$spreadsheet->getDefaultStyle()->getFont()->setName('Arial');
$spreadsheet->getDefaultStyle()->getFont()->setSize(8);//获取文档所有值
$data = $sheet->toArray();
//获取最大行数
$res = $sheet->getHighestRow();
//获取最大列数
$res = $sheet->getHighestColumn();//单元格信息
$cell = $sheet->getCellByColumnAndRow(2, 1); //获取单元格 B1
$cell = $sheet->getCell('A1'); //获取单元格A1
$cell->getValue(); //获取单元格的数据值
$cell->getCoordinate(); //获取行列信息 A1
$column = $cell->getColumn(); //获取列信息 A
$row   = $cell->getRow(); //获取行信息 1
$cell->getDataType(); //获取数据类型
$cell->setValue('8888'); //设置值
$cell->getStyle()->getFont()->getName(); //单元格样式//设置行高
$sheet->getDefaultRowDimension()->setRowHeight(10, 'mm');
$sheet->getRowDimension(1)->setRowHeight(10, 'mm');
//设置列宽
// $sheet->getColumnDimension('A')->setAutoSize(true);
//$sheet->getColumnDimension('A')->setWidth(300);//设置A列的宽度
$sheet->getDefaultColumnDimension()->setWidth(20); //设置列默认宽度//设置换行
$sheet->setCellValue('A2', "hellow\nphp"); //设置换行 双引号+\n+setWrapText
$sheet->getStyle('A2')->getAlignment()->setWrapText(true); //设置换行//合并拆分单元格
$sheet->mergeCells('B2:B3');
// $sheet->unmergeCells('B2:B3');//设置值
// $sheet->setCellValue('A1', "hellow\nphp");
$sheet->setCellValueByColumnAndRow(2, 2, '6666'); //设置B2的值
// $sheet->fromArray($arr, null, 'D5'); //数组,空值时填充值,开始单元格坐标//设置超链接
$sheet->setCellValue('B3', "百度"); //设置A链接
$sheet->getCell('B3')->getHyperlink()->setUrl('https://www.baidu.com');
// $sheet->setCellValue('E26', 'www.phpexcel.net');
// $sheet->getCell('E26')->getHyperlink()->setUrl("sheet://'Sheetname'!A1");//设置字体粗细大小颜色
$sheet->getStyle('B3')->getFont()->setBold(true)->setName('Arial')->setSize(20);
$sheet->getStyle('B3')->getFont()->getName(); //字体名
$sheet->getStyle('B3')->getFont()->getColor()->setRGB('#AEEEEE'); //设置颜色
$sheet->getStyle('B3')->getFont()->getColor()->getRGB(); //获取颜色值
$sheet->getCell('C3')->setValue('2021-03-27 23:22:59');
//$sheet->getStyle('D2')->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_DDMMYYYY);//设置日期格式
$sheet->getStyle('D3')->getNumberFormat()->setFormatCode('dd/mm/yyyy'); //设置日期格式 与上文相同//设置单元格背景色
$sheet->getStyle('E3')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB(Color::COLOR_GREEN);//设置单元格对齐方式
$sheet->getStyle('B2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('B2')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);//设置单元格边框
$sheet->getStyle('C2:E2')->getBorders()->getBottom()->setBorderStyle(Border::BORDER_THIN);//富文本
$html = '<strong>bold</strong>, <em>italic</em>, <strong><em>bold+italic</em></strong>';;
$wizard = new HtmlHelper();
$richText = $wizard->toRichTextObject($html);
$sheet->setCellValue('D5', $richText);//公式
$sheet->setCellValue('A4', '=IF(C4>500,"profit","loss")');
// $formula = $sheet->getCell('A4')->getValue();
// $value = $sheet->getCell('A4')->getCalculatedValue();//插入删除行列
$sheet->insertNewRowBefore(7, 2);
$sheet->removeRow(7, 2);//写入图片
$drawing = new Drawing();
$drawing->setName('Logo')->setDescription('Logo')->setPath('../files/1.jpg')->setHeight(30)->setCoordinates('D6')->setOffsetX(50)->setOffsetY(6);
$drawing->setRotation(25);
$drawing->getShadow()->setVisible(true);
$drawing->getShadow()->setDirection(45);$drawing->setWorksheet($sheet);//设置单元格数据类型
$sheet->getCell('A1')->setValueExplicit('25', DataType::TYPE_NUMERIC);//格式
$styleArray = ['font' => ['bold' => true,],'alignment' => ['horizontal' => Alignment::HORIZONTAL_RIGHT,],'borders' => ['top' => ['borderStyle' => Border::BORDER_THIN,],],'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_GRADIENT_LINEAR,'rotation' => 90,'startColor' => ['argb' => 'FFA0A0A0',],'endColor' => ['argb' => 'FFFFFFFF',],],
];
$filename = '01simple.xlsx';
$sheet->getStyle('A5:E5')->applyFromArray($styleArray);// // 保存xlsx在本地
// $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
// $writer->save('01simple.xlsx');// 下载xlsx
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
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;

二. 导出(写入)

<?phpnamespace app\admin\controller\Index;use app\common\controller\Backend;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Reader\Csv;
use PhpOffice\PhpSpreadsheet\Reader\Xls;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Helper\Sample;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;class Index extends Backend
{// 导出(写入)public function export(){$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();$sheet->setCellValue('A1', 'a1');$sheet->setCellValue('A2', 'a2');$sheet->setCellValue('A3', 'a3');$sheet->setCellValue('A4', 'a4');$sheet->setCellValue('B1', 'b1');$sheet->setCellValue('B2', 'b2');$sheet->setCellValue('B3', 'b3');$sheet->setCellValue('B4', 'b4');$writer = IOFactory::createWriter($spreadsheet, 'Xls');$writer->save('php://output');return;}
}

三. 导入(读取)

<?phpnamespace app\admin\controller\Index;use app\common\controller\Backend;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Reader\Csv;
use PhpOffice\PhpSpreadsheet\Reader\Xls;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Helper\Sample;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;class Index extends Backend
{// 导入(读取)public function import(){$reader = IOFactory::createReader('Xlsx');$reader->setReadDataOnly(TRUE);$spreadsheet = $reader->load('Public/hello.xlsx'); //载入excel表格$sheet = $spreadsheet->getSheet(0); // 读取第一個工作表$highest_row = $sheet->getHighestRow(); // 取得总行数$highest_columm = $sheet->getHighestColumn(); // 取得总列数for ($row = 1; $row <= $highest_row; $row++){ //行号从1开始for ($column = 'A'; $column <= $highest_columm; $column++){ //列数是以A列开始$str = $sheet->getCell($column . $row)->getValue();dump($str);}}}
}

四. 模版导出(读写)

<?phpnamespace app\admin\controller\Index;use app\common\controller\Backend;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Reader\Csv;
use PhpOffice\PhpSpreadsheet\Reader\Xls;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Helper\Sample;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;class Index extends Backend
{// 模版导出(读写)public function templateExport(){$template_path = __DIR__ . '/PayrollTemplate.xls';// 读取模板$spreadsheet = IOFactory::load($template_file_address);// 以下代码行将活动工作表索引设置为第一个工作表:设置Excel Sheet$spreadsheet->setActiveSheetIndex(0);// 指向激活的工作表$worksheet = $spreadsheet->getActiveSheet();$worksheet->getCell('A1')->setValue('John');$worksheet->getCell('A2')->setValue('Smith');// 样式设置 加边框$styleThinBlackBorderOutline = array('borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,'color' => ['argb' => '666666'],],]);$worksheet->getStyle( 'A6:H'.$i)->applyFromArray($styleThinBlackBorderOutline);// 结束 进行导出ob_end_clean(); // 清空(擦除)缓冲区并关闭输出缓冲ob_start(); // 打开输出控制缓冲$date = date("Ymd",time());$listname = 'hello'.$date;header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition: attachment;filename="'.$listname . '.xlsx"');header('Cache-Control: max-age=0');$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');$writer->save('php://output');}}
}

PhpSpreadsheet 基本使用和导入 导出 模版生成Excel文件相关推荐

  1. 获取jqGrid中的所有数据导出并生成Excel文件流供用户下载(post请求实现文件下载)...

    最近有一个需求是: 将jqGrid表格中的数据生成报表Excel文件返回给用户. 我的想法是获取jqGrid中的数据然后生成json数据,传给后端,生成文件流,响应到前端,保存为excel文件. aj ...

  2. java excel 导入导出_java中excel文件的导入和导出

    如有需要可以加我Q群[308742428]大家一起讨论技术,提供技术支持. 后面会不定时为大家更新文章,敬请期待. 前端上传excel文件到后台,后台接收后保存数据到数据库. 这里需要说明的一点是前端 ...

  3. java ajax 导出excel文件_springMVC(4)---生成excel文件并导出

    springMVC(4)---生成excel文件并导出 在开发过程中,需要将数据库中的数据以excel表格的方式导出. 首先说明.我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口, ...

  4. POI导出多个Excel文件,生成压缩文件

    众所周知,每个Excel文件最多可以存储255个sheet.当需要导出的sheet数超过255个时,比较好的办法是将多个Excel文件压缩成.zip文件再导出 步骤:1 将需要导出的表封装到listB ...

  5. linux读取excel并导入mysql_mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)...

    Mysql导入导出sql,txt,excel 首先我们通过命令行进入到mysql安装目录的bin目录下,比如我输入的命令行为: d: cd  D:/wamp/bin/mysql/mysql5.6.17 ...

  6. C#导入导出数据到Excel的通用类源码

    下面内容是关于C#导入导出数据到Excel的通用类的内容. public class ExcelIO { private int _ReturnStatus; private string _Retu ...

  7. linux中oracle导出dmp,linux下导入导出oracle的dmp文件

    1.导出dmp件 命令:exp QGTG/\"QGTG@orcl\" file=/usr/fuck.dmp exp QGTG/\"QGTG@orcl\" fil ...

  8. CATIA批量导入导出数据到EXCEL

    CATIA批量导入导出数据到EXCEL 序言 一.EXCEL数据点批量导入到CATIA 二.CATIA数据点批量导入到EXCEL 三.VB批量输出点到EXCEL 序言 工作中,由于测量基准和建模基准不 ...

  9. python根据excel生成报表_Python实现导出数据生成excel报表的方法示例

    本文实例讲述了Python实现导出数据生成excel报表的方法.分享给大家供大家参考,具体如下: #_*_coding:utf-8_*_ import MySQLdb import xlwt from ...

最新文章

  1. yii mysql 事务处理_Yii2中事务的使用实例代码详解
  2. 忘记mysql登录密码怎么办
  3. 有关logistic(sigmoid)函数回归
  4. Redis-学习笔记05【Jedis连接池】
  5. WPF绑定资源文件错误(error in binding resource string with a view in wpf)
  6. quill鼠标悬浮 出现提示_「超逸酷玩」VT300S RGB电竞游戏鼠标支持云同步自定义设置...
  7. Node.js的基本使用3
  8. java write to files_Java 8 write to file example
  9. 涨疯了!国产鞋被爆炒,原价1499元卖48889元,有人几天赚一辆车
  10. Echarts Y轴min显示奇葩问题(做此记录)
  11. logback按等级输出到不同日志文件
  12. 浪涌保护器ant120_浪涌保护器测试流程
  13. 一文教你如何摆脱应用商店下载微软应用
  14. 从入门到放弃C语言-入门篇(1)
  15. 心上莲花:佛教简介(上)
  16. WORD无法复制文件:无法读源文件或磁盘
  17. 用Python分析《都挺好》中的人物关系
  18. 中国近12个月以来的搜索引擎市场份额
  19. The following packages will be SUPERCEDED by a higher-priority channel是什么意思?
  20. android的usb热插拔,Android M能让外部存储变成内部存储 支持U盘热插拔

热门文章

  1. 最新版学习笔记---Python机器学习基础教程(1)Irises(鸢尾花)分类---附完整代码
  2. 深度学习相关基础理论
  3. google的高级搜索语法说明
  4. RWS 负责任羊毛标准
  5. Java 获取Word中的所有插入和删除修订
  6. 苹果电脑装 WIN7 黑屏问题解决办法
  7. 批量查询快递单号筛选出代收单号
  8. 播放音乐 锁屏 状态下,看到歌手图片
  9. Jexl表达式引擎(2)
  10. Anaconda入门:安装及包与环境的管理(conda命令)