PhpSpreadsheet_php获取表单数据

PhpSpreadsheet_php获取表单数据在利用php读取Excel时,当前(2019年)流行的做法是利用composer安装PhpSpreadsheet(composerrequirephpoffice/phpspreadsheet)来操作,示例代码如下:$abs_excel_path=$_SERVER[‘DOCUMENT_ROOT’].’/data.xlsx’;$spreadsheet=\PhpOffi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在利用php读取Excel时,当前(2019年)流行的做法是利用composer安装PhpSpreadsheet(composer require phpoffice/phpspreadsheet)来操作,示例代码如下:

$abs_excel_path = $_SERVER['DOCUMENT_ROOT'] . '/data.xlsx';
      $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($abs_excel_path);
$worksheet = $spreadsheet->getActiveSheet();
$highestRow = $worksheet->getHighestRow(); // 总行数1, 2,3
$rows = [];
for ($rowIndex = 2; $rowIndex <= $highestRow; $rowIndex++) { 
   
	$row['code'] = $worksheet->getCell("B{ 
     $rowIndex}")->getValue();
	$row['name'] = $worksheet->getCell("C{ 
     $rowIndex}")->getValue();
	$row['unit'] = strval($worksheet->getCell("D{ 
     $rowIndex}")->getValue());
	$row['price'] = $worksheet->getCell("E{ 
     $rowIndex}")->getValue();
	$row['quantity'] = $worksheet->getCell("F{ 
     $rowIndex}")->getCalculatedValue(); // 获得公式计算值
	$row['amount'] = $worksheet->getCell("G{ 
     $rowIndex}")->getCalculatedValue(); // 获得公式计算值
    $row['date'] = $worksheet->getCell("G{ 
     $rowIndex}")->getFormattedValue(); // 获得日期的格式化数值
	if (!$row['code'] || $row['code'] == 'NULL') { 
   
		$row['code'] = $row['name'];
	}
	$rows[] = $row;
}

读取单元格数值是有坑的。
1、读取数值,要担心万一某些单元格写的是公式,比如“=1900+200”,或=SUM(G2:G5)等,这里看到单元格里写的是数字,但鼠标点击单元格可看到写的是公式,这样使用getValue方法将得到公式本身,而不是计算过的值,应使用getCalculatedValue。
2、读取日期、时间时,getValue得到的是Excel里存储的数值,比如日期是以1900年1月1日为整数1,每过一天加1的数值。比如时间是同php的time()的值,虽然显示是格式化好的字符串,但读取到的是存储的数字。这里应使用getFormattedValue。
另外,如果ABCDEFG也要使用程序的变量来代替,最好是用getCellByColumnAndRow($columnIndex, $row, c r e a t e I f N o t E x i s t s = t r u e ) 代 替 g e t C e l l ( createIfNotExists = true)代替getCell( createIfNotExists=true)getCell(pCoordinate, c r e a t e I f N o t E x i s t s = t r u e ) , 并 且 createIfNotExists = true),并且 createIfNotExists=true)columnIndex是从1开始的列数,而$row是从0开始的行数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193017.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月3日 下午7:15
下一篇 2025年12月3日 下午7:43


相关推荐

  • springboot使用swagger2生成api文档

    springboot使用swagger2生成api文档一、为什么要用Swagger2?之前开发项目的时候,需要写API文档,项目小接口少的时候一份word就能简单应付,但是随着项目的API的增加,对API文档的维护工作就会越来越繁琐,为此引入能自动生成

    2022年8月16日
    10
  • 一万字一篇文20分钟学会C语言和Python,十四年编程经验老鸟传授经验之道

    一万字一篇文20分钟学会C语言和Python,十四年编程经验老鸟传授经验之道前言昨天在直播中有粉丝问我如何快速的对编程语言入门 我想这个问题是有必要让大家知道的 相必也有很多新手对于如何快速完成编程语言的入门学习很感兴趣 本篇文将会使用 C 语言以及 Python 为例 做出对比 让大家对编程语言的共同基础知识点得以了解 方便大家的学习 在此我做了一张图 红色标注为 Python 与 C 语言之间的知识点细微差异 指使用上 蓝色标注为较大差异 从上图中我们可以发现 Python 与 C 语言两者差异并不明显 80 内容较为类似 我们接下来将会同时学习这些有共同点的知识点

    2026年3月19日
    2
  • JS代码大全

    JS代码大全事件源对象 event.srcElement.tagName event.srcElement.type捕获释放 event.srcElement.setCapture

    2022年7月1日
    25
  • linux查看防火墙状态命令

    linux查看防火墙状态命令1 查看防火墙状态 firewall cmdstate2 关闭防火墙 systemctlsto service

    2026年3月17日
    1
  • VsVim的vimrc

    VsVim的vimrc给VisualStudio安装VsVim后可在VS中使用vim的便捷编辑功能,很强大。同时也可通过vimrc文件来做些特殊配置,vimrc的搜索路径可通过在编辑器中输入“:set”查看。我的vimrc搜索路径如下:vimrcpaths=”C:\Users\chenbo;C:\Users\chenbo\vimfiles;C:\Users\chenbo”在C:\Users\Chenbo…

    2022年6月10日
    54
  • Mysql修改字段类型[通俗易懂]

    Mysql修改字段类型[通俗易懂]mysql修改字段长度altertablenewsmodifycolumntitlevarchar(130);altertable表名modifycolumn字段名类型;如:tplay_auser表里的sex字段将数据类型改为char长度为20altertabletplay_ausermodifycolumnsexchar(20)

    2022年4月29日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号