php用PhpSpreadsheet对Excel进行读取、写入、修改十分便捷,下面将我在工作中用到过的操作进行总结。文档参考百度搜索和原始文档:https://phpspreadsheet.readthedocs.io/en/latest/(只有英文版)
首先要引入php模块: composer require phpoffice/phpspreadsheet
1、读取Excel:见文章PhpSpreadsheet读取单元格内容的坑
2、修改Excel:示例代码(只保留了基础代码):

$this->view->title = '填写Excel';
$abs_excel_path = $_SERVER['DOCUMENT_ROOT'] . '/data_be_writen.xlsx';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($abs_excel_path);
$count = 0;
// 三个sheet都进行修改
for ($sheetIndex=0; $sheetIndex<3; $sheetIndex++) {$worksheet = $spreadsheet->getSheet($sheetIndex);$highestRow = $worksheet->getHighestRow(); // 总行数1, 2,3for ($rowIndex = 1; $rowIndex <= $highestRow; $rowIndex++) {$count++;// 写入的数据只是个示例,具体项目中根据需求获取数值写入$worksheet->getCellByColumnAndRow(1, $rowIndex)->setValue($rowIndex);$worksheet->getCellByColumnAndRow(2, $rowIndex)->setValue($rowIndex * 10);}
}
echo "填写了${count}条数据";
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save($abs_excel_path);

3、写入Excel,下面的代码提现了一个导出账号的过程,是基于ThinkPHP5.0的:

$head = ['部门', '姓名', '职位', '手机号', '邮箱'];
$count = count($head);$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet();$worksheet->getColumnDimension('A')->setWidth(20);
$worksheet->getColumnDimension('B')->setWidth(12);
$worksheet->getColumnDimension('C')->setWidth(12);
$worksheet->getColumnDimension('D')->setWidth(18);
$worksheet->getColumnDimension('E')->setWidth(20);$rowIndex = 1;
foreach ($head as $colIndex => $title) {$worksheet->getCellByColumnAndRow($colIndex + 1, $rowIndex)->setValue($title);
}$admins = $this->order('id asc')->select();
foreach ($admins as $admin) {$rowIndex++;$worksheet->getCellByColumnAndRow(1, $rowIndex)->setValue(model('Department')->get_name_by_id($admin['department_id']));$worksheet->getCellByColumnAndRow(2, $rowIndex)->setValue($admin['username']);$worksheet->getCellByColumnAndRow(3, $rowIndex)->setValue($admin['position']);$worksheet->getCellByColumnAndRow(4, $rowIndex)->setValue($admin['phone']);$worksheet->getCellByColumnAndRow(5, $rowIndex)->setValue($admin['email']);
}header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="账号.xlsx"');
header('Cache-Control: max-age=0');
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('php://output');//删除清空:
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);
exit;

4、修改单元格样式的,代码进行了精简,具体要标记哪个,根据项目实际判断:

$this->view->title = '填写Excel';
$abs_excel_path = $_SERVER['DOCUMENT_ROOT'] . '/2.xlsx';
$styleArray = ['borders' => ['outline' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,'color' => ['argb' => 'FFFF0000'],],],
];
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($abs_excel_path);
$count = 0;
for ($sheetIndex=0; $sheetIndex<3; $sheetIndex++) {$worksheet = $spreadsheet->getSheet($sheetIndex);$highestRow = $worksheet->getHighestRow(); // 总行数1, 2,3$excel_data = new \app\admin\model\ExcelData2;for ($rowIndex = 2; $rowIndex <= $highestRow; $rowIndex++) {$worksheet->getStyle("B{$rowIndex}")->applyFromArray($styleArray);}
}
echo "发现了${count}条数据";
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save($_SERVER['DOCUMENT_ROOT'] . '/2标记.xlsx');

注意:对比2、4可以发现:读取了Excel以后,如果要改写,只需要两行代码,在save的时候填写的绝对路径跟读取的一样,则为改写,如果不同,则为新建。

PhpSpreadsheet常用操作相关推荐

  1. TensorFlow常用操作:代码示例

    1,定义矩阵代码示例: import tensorflow as tftf.zeros([3,4]) #定义3行4列元素均为0的矩阵tensor=tf.constant([1,2,3,4])#定义一维 ...

  2. Ubuntu 常用操作

    Ubuntu常用操作 外观操作 修改应用icon图标 终端美化 内存管理 内存查询 分区管理 日志清理 操作执行 自动执行多条命令 外观操作 修改应用icon图标 在/usr/share/applic ...

  3. IOS沙盒Files目录说明和常用操作

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

  4. 用Python轻松搞定Excel中的20个常用操作

    来源 |早起Python(ID: zaoqi-python) Excel与Python都是数据分析中常用的工具,本文将使用动态图(Excel)+代码(Python)的方式来演示这两种工具是如何实现数据 ...

  5. python和R对dataframe的常用操作的差异:head、tail、shape、dim、nrow、ncol、descirbe、summary、str

    python和R对dataframe的常用操作的差异:head.tail.shape.dim.nrow.ncol.descirbe.summary.str # python df.head() # R ...

  6. 【node】Sequelize常用操作、基本增删改查

    [node]Sequelize常用操作.基本增删改查 sequelize初始化 先初始化一个数据库实例 再初始化一个model实例 sequelize的数据类型 基本增删改查的写法 SELECT * ...

  7. JavaScript:对Object对象的一些常用操作总结

    JavaScript对Object对象的一些常用操作总结. 一.Object.assign() 1.可以用作对象的复制 var obj = { a: 1 }; var copy = Object.as ...

  8. ubuntu的学习教程(常用操作)

    摘要 最近在学习linux,把自己学习过程中遇到的常用操作以及一些有助于理解的内容记录下来.我主要用的是ubuntu系统 命令提示符 '~' 这个是指用户的家目录,用户分为root用户和普通用户,ro ...

  9. 20180929 VIM进入编辑模式、VIM命令模式常用操作

    2019独角兽企业重金招聘Python工程师标准>>> vim进入编辑模式方式 按键 作用 i 在当前字符前插入 I 在光标所在行的行首插入 a 在当前字符后插入 A 在光标所在行的 ...

最新文章

  1. Laravel 中简约而不简单的 Macroable 宏指令
  2. TODO:macOS编译PHP7.1
  3. MySQL---第07章_单行函数
  4. 国二计算机考试技巧,全国计算机等级考试上机考试应试技巧(二)
  5. 洛谷P3006 [USACO11JAN]瓶颈Bottleneck(堆模拟)
  6. Ubuntu下使用AMD APP编写OpenCL程序
  7. 如何在android studio中设置sdk path?
  8. wins系统flask绑定mysql_flask如何连接mssql,网上大多是sqlite和mysql教程?
  9. 线程被中断跟被阻塞有什么区别_宠物加盟店跟自营店有什么区别
  10. ROS-创建功能包和节点
  11. BZOJ 1199: [HNOI2005]汤姆的游戏 计算几何暴力
  12. 特斯拉上海超级工厂Model Y日产量达到1000辆 超过Model 3
  13. NIPS不改名再引风波:签名抗议活动开启,大咖纷纷发声支持
  14. CF1110G Tree-Tac-Toe 博弈论、构造
  15. Linux系统编程 -- 进程 信号
  16. 第十七章 模型压缩及移动端部署
  17. 动态规划实战10 leetcode-64. Minimum Path Sum
  18. c语言一元多项式求和
  19. 数据的导出Excel表
  20. WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换案例教程(附转换工具下载)

热门文章

  1. android 语音和输入法按钮切换,android 切换系统语言,输入法也随之切换
  2. 修改VMware虚拟机IP地址为指定IP
  3. Microsoft Visio Professional 2013打不开也卸载不了解决办法
  4. 美格信-理解串扰Crosstalk
  5. android listview网络图片,Android ListView从网络获取图片及文字显示
  6. Nginx:[emerg] unknown directive “server” in*******
  7. 中介/代理,正/反向代理,直/间接代理,概念清晰解释
  8. Elasticsearch-head-master配置 (与es连接)
  9. MySQL导入数据导致C盘空间不足
  10. 阿里云视频点播功能使用