php将身份证号写入excel文件出现科学计数法问题解决

server/2025/3/15 0:40:15/

        在 PHP 中生成 Excel 文件并处理身份证号时,通常使用 PHPExcel 或其继任者 PhpSpreadsheet 库。身份证号通常是以字符串形式存储的,但在某些情况下,如果身份证号很长(例如,超过 15 位数字),在 Excel 中可能会以科学计数法(如:4.77887E+17)显示。为了避免这种情况,我们需要确保在写入数据时将其作为文本格式处理。

        以下是如何使用 PhpSpreadsheet 库来生成 Excel 文件,并确保身份证号不会以科学计数法显示:

  1. 安装 PhpSpreadsheet

    如果你还没有安装 PhpSpreadsheet,可以通过 Composer 安装:

    composer require phpoffice/phpspreadsheet

  2. 创建并保存 Excel 文件

    使用以下 PHP 代码来创建一个 Excel 文件,并确保身份证号作为文本格式写入:

    php"><?phpuse PhpOffice\PhpSpreadsheet\Spreadsheet;
    use think\facade\Filesystem;
    use think\facade\Request;
    use PhpOffice\PhpSpreadsheet\IOFactory;
    use PhpOffice\PhpSpreadsheet\Cell\Coordinate;/*** 写入excel文件信息  并去除身份证科学计数法** @param $data  文件内容* @param $title 文件名称前缀* @param $savePath 文件存储路径* @return string 生成的文件地址* @throws \PHPExcel_Exception* @throws \PHPExcel_Reader_Exception* @throws \PHPExcel_Writer_Exception*/
    function writerXls($data, $title, $savePath='')
    {$objPHPExcel = new Spreadsheet();$filename = $title . '-' . date('YmdHis') . '.xls';$objPHPExcel->createSheet();$objPHPExcel->setActiveSheetIndex(0); //设置第一个工作表为活动工作表$objPHPExcel->getActiveSheet()->setTitle('sheet1'); //设置工作表名称$sheet = $objPHPExcel->getActiveSheet();foreach ($data as $k => $val) {foreach ($val as $i => $v) {// 将列索引转换为字母(如 1 -> A, 2 -> B, 3 -> C)$colLetter = Coordinate::stringFromColumnIndex($i + 1);// 动态生成单元格坐标(如 A1, B2, C3 等)$cellCoordinate = $colLetter . ($k + 1);// 如果是身份证号列,强制存储为文本if ($i >= 0) {//都存储为字符串型  此处可设置哪些列设置为字符串类型 判断$i列值即可$sheet->setCellValueExplicit($cellCoordinate, $v, 'str');} else {$sheet->setCellValue($cellCoordinate, $v);}}}foreach ($data[0] as $k => $val) {in_array($k, array(0, 6)) ? $objPHPExcel->getActiveSheet()->getColumnDimension(chr($k + 65))->setWidth(30) :$objPHPExcel->getActiveSheet()->getColumnDimension(chr($k + 65))->setWidth(25);}//输出$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;
    }?><?php// 示例数据$data = [['姓名', '身份证号', '手机号'],['张三', '123456789012345678', '13800138000'],['李四', '987654321098765432', '13900139000'],];//调用生成xsl文件函数$excel_url = writerXls($data, 'id_numbers',  '/download/idcard');
    ?>
  3. 运行代码

    运行上述 PHP 脚本后,你将得到一个名为 id_numbers-20250313******.xls 的 Excel 文件,其中身份证号不会以科学计数法显示。每个身份证号都会被正确识别为文本格式。

        通过以上步骤,你可以确保在生成的 Excel 文件中,所有的身份证号都不会被错误地以科学计数法显示。


http://www.ppmy.cn/server/175015.html

相关文章

【每日学点HarmonyOS Next知识】自定义对话框关闭、WaterFlow嵌套、状态栏颜色、滚动吸附、滚动动效

1、HarmonyOS 自定义对话框自动关闭的问题&#xff1f; 启动页做了个隐私协议弹窗&#xff0c;autoCancel为false。UI中使用 Text() ContainerSpan() Span()组件&#xff0c;设置了点击事件&#xff0c;点击后使用router.pushUrl()的方法跳转到协议页面。点击时&#xff0c;对…

自动化测试 | Python+PyCharm+Google Chrome+Selenium 环境安装记录

目录 环境版本 浏览器与驱动 Python 安装 测试 PyCharm 安装 开启软件 开始破解 Selenium 安装 测试 自动化的其实就是模拟手工点击的方式 环境版本 Python&#xff1a;3.11.8 PyCharm&#xff1a;2021.1.3 Selenium&#xff1a;x.x 浏览器与驱动 114.0.5735.90 …

【面试题系列】 Redis 核心面试题(二)答案

本文主要介绍Redis 的面试题&#xff0c;涵盖持久化、集群、缓存策略、事务等方面 一、持久化机制 1. RDB 与 AOF 的核心区别及适用场景&#xff1f; 答案&#xff1a; 特性RDBAOF存储内容内存快照&#xff08;二进制文件&#xff09;写命令日志&#xff08;文本格式&#x…

Unity知识总结——算法

文章目录 1.常见排序算法1.冒泡排序2.选择排序3.插入排序4.快速排序5.归并排序6.希尔排序7.堆排序8.桶排序9.计数排序算法10.基数排序算法 2. 常见查找算法1.线性查找2.二分查找3.哈希查找4.二叉查找树5.平衡二叉查找树6.跳表7.Trie 树8.Bloom Filter 3.空间切割算法4.洗牌算法…

python学习笔记-mysql数据库操作

现有一个需求&#xff0c;调用高德api获取全国县级以上行政区数据并保存为json文件&#xff0c;使用python获取&#xff1a; import requests import json# 高德API Key api_key "your_api_key"# 调用行政区域查询API def fetch_districts():url f"https://r…

神经网络完成训练的详细过程

神经网络完成训练的详细过程 一、神经网络的基本概念 神经网络是一种模拟人脑神经系统的计算模型&#xff0c;由大量的神经元&#xff08;节点&#xff09;和它们之间的连接&#xff08;权重&#xff09;组成。神经元接收输入信号&#xff0c;通过加权求和和激活函数的处理&a…

vscode 中快捷生成模板快捷键

1. 使用 Emmet 缩写 Emmet 是一个强大的工具&#xff0c;可以帮助你快速生成 HTML、CSS 等代码模板。 HTML 模板: 输入 ! 然后按下 Tab 键&#xff0c;Emmet 会自动生成一个基本的 HTML5 模板。 <!DOCTYPE html> <html lang"en"><head><meta c…

子母钟系统,京准电子科技助力高考精准计时

子母钟系统&#xff0c;京准电子科技助力高考精准计时 子母钟系统&#xff0c;京准电子科技助力高考精准计时 【摘要】子母钟系统又叫网络时钟系统是校园网络中一个重要的精准计时系统&#xff0c;随着网络的普及&#xff0c;许多校园都建了自己的校园专网&#xff0c;使用的…