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


相关推荐

  • Mac navicat15 激活码【中文破解版】

    (Mac navicat15 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlH2AE5L25Z5-eyJsa…

    2022年3月28日
    36
  • setTimeout()和setInterval()在用法上有什么区别_setinterval返回值

    setTimeout()和setInterval()在用法上有什么区别_setinterval返回值setTimeout与setTimeinterval的使用

    2022年10月5日
    1
  • 全局负载均衡(GSLB)的实现方案

    全局负载均衡(GSLB)的实现方案WhatisGSLBGlobalServerLoadBalancing中文:全局负载均衡SLB(Serverloadbalancing)是对集群内物理主机的负载均衡,而GSLB是对物理集群的负载均衡。这里的负载均衡可能不只是简单的流量均匀分配,而是会根据策略的不同实现不同场景的应用交付。GSLB是依赖于用户和实际部署环境的互联网资源分发技术,不同的目的对应着一系列不…

    2022年4月28日
    119
  • C# 条件运算符_c++ 运算符

    C# 条件运算符_c++ 运算符usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace_0212_条件运算符{classProgram{//?一、C#条件运算符(?:)…

    2022年10月2日
    2
  • kfold_提示Kfold对象不可迭代[通俗易懂]

    kfold_提示Kfold对象不可迭代[通俗易懂]defprinting_Kfold_scores(x_train_data,y_train_data):fold=KFold(5,shuffle=False)print(fold)#C——正则化强度c_param_range=[0.01,0.1,1,10,100]results_table=pd.DataFrame(index=range(len(c_param_range),2…

    2022年9月20日
    3
  • 压测TPS_测压管原理

    压测TPS_测压管原理1.TPS、并发量是什么关系?为什么有的地⽅要⽤TPS?有的地⽅要⽤并发?⾸先,TPS是⼀个吞吐速度的概念,就是每秒处理多少请求。是衡量系统处理能⼒的指标,⽽往往TPS的最⼤值,并⾮系统资源耗尽的时点,因为TPS和系统资源是⼀个抛物线的关系,就是当资源最优配置时往往是TPS最⾼的时间,当资源耗尽时,往往TPS也是⾮常低的。每个TPS指标都会对应当时的并发量。然后说说并发量,并发量往往是对⼀个系统同时操作的⼈数的,或者说同时产⽣的请求数的预估,来衡量系统的承载能⼒。⾔外之意,这个指标⽬的在于看能否同时承载

    2022年10月21日
    1

发表回复

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

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