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

Spreadsheet导出excel

记录下常用的方法

  1. 数字转字符:Coordinate::stringFromColumnIndex(27); 输出 AA
  2. 字符转数字:Coordinate::columnIndexFromString('AA'); 输出27
  3. 设置单元格式 eg:(设置为保留两位小数点)
    $sheet->getStyle($columnLetter)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_NUMBER_00);
    $columnLetter 可以按照上面的数字转字符获取。也可以直接设置单元列
  4. 设置样式
    $endColumn = Coordinate::stringFromColumnIndex(count($headers));$endRow = count($data);// 设置区域内的格式:eg:(添加边框,水平居中,上下居中)$sheet->getStyle("A1:$endColumn" . $endRow)->applyFromArray(['borders' => ['allBorders' => ['borderStyle' => Border::BORDER_THIN,],],'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER,'vertical' => Alignment::VERTICAL_CENTER,],]);
  1. 重新判断类型,数字改为文本类型,取消科学技术法 【CustomValueBinder() 这个类需手动创建】
    Cell::setValueBinder(new CustomValueBinder());
<?phpnamespace extend\common\helpers;use \PhpOffice\PhpSpreadsheet\Cell\{DefaultValueBinder, DataType};
use PhpOffice\PhpSpreadsheet\RichText\RichText;/*** @descirption 改类是为了解决 phpSpreadsheet 中dataTypeForValue 的返回类型不正确* 导致导出的文件中出现科学计数法*/
class CustomValueBinder extends DefaultValueBinder
{public static function dataTypeForValue($value): string{//只重写dataTypeForValue方法,去掉一些不必要的判断if (is_null($value)) {return DataType::TYPE_NULL;} elseif ($value instanceof RichText) {return DataType::TYPE_INLINE;} elseif ($value && $value[0] === '=' && strlen($value) > 1) {return DataType::TYPE_FORMULA;} elseif (is_bool($value)) {return DataType::TYPE_BOOL;} elseif (is_float($value) || is_int($value)) {return DataType::TYPE_NUMERIC;}return DataType::TYPE_STRING;}
}
http://www.lryc.cn/news/470375.html

相关文章:

  • Leetcode|454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
  • 使用ceph-csi把ceph-fs做为k8s的storageclass使用
  • 太速科技-212-RCP-601 CPCI刀片计算机
  • 【解决 Windows 下 SSH “Bad owner or permissions“ 错误及端口转发问题详解】
  • 使用预训练的BERT进行金融领域问答
  • ReactOS系统中MM_REGION结构体的声明
  • web相关知识学习笔记
  • App测试环境部署
  • 【论文阅读】Tabbed Out: Subverting the Android Custom Tab Security Model
  • 2025 - AI人工智能药物设计 - 中药网络药理学和毒理学的研究
  • iwebsec靶场 XSS漏洞通关笔记
  • 设计模式-单例模型(单件模式、Singleton)
  • 笔记本双系统win10+Ubuntu 20.04 无法调节亮度亲测解决
  • 零基础Java第十一期:类和对象(二)
  • NumPy包(下) python笔记扩展
  • 极狐GitLab 17.5 发布 20+ 与 DevSecOps 相关的功能【一】
  • Oracle 第1章:Oracle数据库概述
  • 7、Nodes.js包管理工具
  • 网络地址转换——NAT技术详解
  • 问:数据库存储过程优化实践~
  • C++ vector的使用(一)
  • 深入浅出:ProcessPoolExecutor 处理异步生成器函数
  • elementUI表达自定义校验,校验在v-for中
  • Elasticsearch 在linux部署 及 Docker 集群部署详解案例示范
  • 短信验证码发送实现(详细教程)
  • P450催化的联芳基偶联反应-文献精读72
  • 在不支持AVX的linux上使用PaddleOCR
  • Python数据分析——Numpy
  • JMeter快速入门示例
  • 【333基于Java Web的考编论坛网站的设计与实现