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


相关推荐

  • 测试用例八大要素有哪些?

    测试用例八大要素有哪些?测试用例八大要素:用例编号、操作步骤、测试标题、重要级别、前置条件、测试输入、所属模块、预期结果。用例编号由字符串组成,具有易于识别性和唯一性;操作步骤需要标明详细的测试步骤;测试标题需要简洁、明了;重要级别一般分为高、中、低;前置条件就是进行测试用例的前提条件;测试输入包括用户名、密码、订单号等内容;所属模块标明被测试的模块或者单元;预期结果表示预期输出的结果。测试用例很重要,是设计和测试过程的基础,同时测试用例也是软件测试的核心,可以发现软件可能出现的bug,一般每个软件产品都有与之对应的测试用

    2022年6月28日
    97
  • ARM Linux ELF加壳方案

    ARM Linux ELF加壳方案随着移动应用和IoT设备的普及,大量的硬件抛弃了传统的x86架构,选择使用能耗低、性价比高的ARM芯片,ARM指令级渐渐成为主流,但随之而来的,是愈发严峻的安全问题。早期的加壳产品主要利用压缩加密技术对文件进行整体性保护,但随着逆向技术的提升,整体性的文件保护方案已经被攻克,于是加壳产品引入虚拟机概念,可以实现函数级的代码控制流保护,加密的颗粒度更加细致,激活成功教程难度呈几何级增加。压缩加密技术原理类似桌面应用的「压缩壳」,将SO文件中的代码段压缩或加密,在入口函数中解密再执行。这种保护方式可

    2022年10月11日
    0
  • 数组splice_数组concat方法

    数组splice_数组concat方法有三个方法经常会混淆,但是了解它后你会发现很好区分splice方法是数组特有的方法spite方法是字符串特有的方法slice方法是字符串和数组共同都有的方法这里介绍下数组的常用方法数组的splice方法splice()函数用于从当前数组中移除一部分连续的元素。如有必要,还可以在所移除元素的位置上插入一个或多个新的元素。该函数以数组形式返回从当前数组中被移除的元素。该…

    2022年9月25日
    0
  • tomcat内存溢出解决,java.lang.OutOfMemoryError: PermGen space

    tomcat内存溢出解决,java.lang.OutOfMemoryError: PermGen space

    2020年11月12日
    196
  • cboard企业版源码_CBoard「建议收藏」

    cboard企业版源码_CBoard「建议收藏」CBoardAnopenBIDashboardplatformthatsupportsinteractivemulti-dimensionalreportdesignanddataanalysisServersideframeworkisSpring+MyBatisandfront-endisbasedonAngularJS1andBootstra…

    2022年10月21日
    1
  • 【带你入门】java网络编程

    【带你入门】java网络编程网络编程网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习。在学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的。首先来问一个问题:你会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网

    2022年6月12日
    39

发表回复

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

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