大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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开始的行数。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193017.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...