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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm上如何拉git代码_pycharm版本控制

    pycharm上如何拉git代码_pycharm版本控制pycharm设置git与deployment1、创建project2、vcs创建git目录,指向project目录3、添加git远程地址4、拉取对应分支代码即可5、设置deployment5.1设置SFTP5.2配置信息5.3设置远程服务器文件地址

    2022年8月28日
    4
  • make menuconfig makefile kconfig详解

    make menuconfig makefile kconfig详解前面有一片文章分析makemenuconfig执行过程:http://blog.csdn.net/xinyuan510214/article/details/50964808今天,将一下makemenuconfigmakefilekconfig等几个容易混淆的关键操作。===1、内核Makefile概述(linux2.6)Linux内核的Makefile分为5个部分

    2022年5月27日
    64
  • Hydra暴力破解工具的用法

    目录Hydra常见参数破解SSH破解FTP破解HTTP破解3389远程登录Kali自带密码字典dirb…

    2022年4月7日
    38
  • Android的启动模式:singleTask与singleTop的使用

    Android的启动模式:singleTask与singleTop的使用最近有小伙伴询问Activity的启动模式是使用singleTask好还是singleTop好,在两种模式中纠结,所以今天就简单讲解一下两种模式的使用场景!Android的四种启动模式(网上一搜一堆哦)standard:默认模式,允许多实例singleTop:相比于standard,有新的启动请求时,只有在目标Activity处于当前栈顶时,才会调用onNewIntent()…

    2022年4月19日
    186
  • Android 编译_android线程

    Android 编译_android线程之前本地环境编译一直是正常的,后来更新代码后,出现编译不过。提示outofmemory,但是查看swap和内存都还是够的。里面有个提示,tryincreasingheapsizewithjavaoption’-Xmx’,就按照这个来改。失败截图:解决方案:exportJACK_SERVER_VM_ARGUMENTS=”-Dfile.e

    2025年9月18日
    4
  • 海量数据处理思路「建议收藏」

    海量数据处理思路「建议收藏」海量数据处理思路海量数据处理海量数据,不能一次加载到内存中海量数据topK(最大和最小k个数),第k大,第k小的数海量数据判断一个整数是否存在其中海量数据找出不重复的数字找出A,B两个海量url文件中共同的url海量数据topK最大K使用最小堆,最小K使用最大堆,这里以最大K为例海量数据hash分块维护最小堆的K个数据的数据容器堆中数据是topK大的数据,堆顶的数据是第K大数据先将海量数据hash再取模m,分成m个小文件,hash(num)%m,也可以直接取模在

    2022年6月23日
    20

发表回复

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

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