当前位置: 首页 > news >正文

php利用createSheet生成excel表格(控制行高列宽、文本自动换行及表头字体样式)

 函数内容概要

1、解决身份证被科学技术法问题

2、解决excel表头字体加粗标红问题

3、解决表格列中字符过多显示不全问题(根据内容多少自动换行)

/*** 写入excel文件信息** update: 添加去除身份证科学计数法判断** @param $data  文件内容* @param $title 表格名称* @param $savePath 表格保存路径* @return string* @throws \PHPExcel_Exception* @throws \PHPExcel_Reader_Exception* @throws \PHPExcel_Writer_Exception*/
function writerSerialXls($data, $title, $savePath='')
{$objPHPExcel = new Spreadsheet();$filename = $title . '-' . date('YmdHis') . '.xls';$objPHPExcel->createSheet();$objPHPExcel->setActiveSheetIndex(0); //设置第一个工作表为活动工作表$objPHPExcel->getActiveSheet()->setTitle('sheet1'); //设置工作表名称$sheet = $objPHPExcel->getActiveSheet();// 获取A1单元格的样式$styleArray = ['font' => ['bold' => true,'color' => ['argb' => 'red']],'alignment' => ['horizontal' => 'center','wrapText' => true, // 启用自动换行 设置自动换行样式'vertical' => 'center',//lignment::VERTICAL_TOP, // 垂直对齐方式(可选)],];// 应用样式到表头 'A1:O1'$sheet->getStyle('A1:P1')->applyFromArray($styleArray);$styleCenterArray = ['alignment' => ['horizontal' => 'center','wrapText' => true, // 启用自动换行 设置自动换行样式'vertical' => 'center',],];foreach ($data as $k => $val) {//行 Row  7$rowHeight = 35;if($k == 0){// 设置第一行的行高$rowHeight = 60;}// $objPHPExcel->getActiveSheet()->getRowDimension($k)->setZeroHeight(true);//自适应行高   setRowHeight$sheet->getRowDimension($k+1)->setRowHeight($rowHeight);//自适应行高   foreach ($val as $i => $v) {//列  17 Column// 将列索引转换为字母(如 1 -> A, 2 -> B, 3 -> C)$colLetter = Coordinate::stringFromColumnIndex($i + 1);// 动态生成单元格坐标(如 A1, B2, C3 等)$cellCoordinate = $colLetter . ($k + 1);// 如果是身份证号列,强制存储为文本 解决身份证被科学技术法存储问题if ($i >= 0) {//算了,都存储为字符串型吧$sheet->setCellValueExplicit($cellCoordinate, $v, 'str');} else {$sheet->setCellValue($cellCoordinate, $v);}//所有文字居中显示$sheet->getCell($cellCoordinate)->getStyle()->applyFromArray($styleCenterArray);}}foreach ($data[0] as $i => $val) {//第一行  $i 列//每一列宽度if(in_array($i, [3,4,13,16])){//  $sheet->getColumnDimension(chr($i + 65))->setWidth(20);//[1,2,9,10$sheet->getColumnDimension(chr($i + 65))->setAutoSize(true);}}//输出$objWriter = IOFactory::createWriter($objPHPExcel, 'Xls');if(!$savePath){$savePath = '/runtime/storage/upload/error';}//创建文件夹if (!file_exists($savePath)) {mkdir($savePath,0777,true);}$objWriter->save($savePath . '/' . $filename);unset($objPHPExcel);return $savePath . '/' . $filename;
}

调用以上函数,可生成excel表格内容如下:

http://www.xdnf.cn/news/963289.html

相关文章:

  • Windows 命令行大全
  • JetBrains IntelliJ IDEA插件推荐
  • [创业之路-415]:经济学 - 价值、使用价值、交换价值的全面解析
  • CentOS7下的大数据NoSQL数据库HBase集群部署
  • 「多模态融合(ECG+PPG联合变异性分析)——ECG信号处理-第十六课」2025年6月10日
  • 屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
  • 校园二手交易平台(微信小程序版)
  • AtCoder 第409​场初级竞赛 A~E题解
  • pycharm最近遇到的一些问题
  • Linux 阻塞非阻塞
  • Ubuntu24.04常见问题
  • AbMole推荐:Cisplatin,从机制到应用的全面了解
  • Hive实现值列表横向展示(非列转行)
  • 汽车扭杆综合试验机
  • 机器人模型文件urdf介绍
  • C++基础学习:深入理解类中的构造函数、析构函数、this指针与new关键字
  • JWT令牌如何在FastAPI中实现安全又高效的生成与验证?
  • 解锁数据库简洁之道:FastAPI与SQLModel实战指南
  • 1.2 git使用
  • 小程序中的状态管理库-mobx-miniprogram
  • 【深尚想】SX1276IMLTRT LoRa射频收发器芯片 物联网 电子元器件解析
  • 在鸿蒙HarmonyOS 5中实现抖音风格的草稿箱功能
  • Kafka 的容错与持久性:副本复制机制的工作原理与实践
  • 实现安全、经济、节约、环保的智慧交通开源了
  • JBank:Jucoin 推出的 Web3 去中心化自托管银行金融协议
  • error: Sandbox: rsync(17136) deny(1) file-write-create
  • 汽车生产虚拟实训中的技能提升与生产优化​
  • 机器学习的可解释性
  • 项目课题——智能花盆系统设计
  • “机器学习中的‘Hello World‘:为什么我们总用MNIST数据集,以及何时该放弃它“