PHP(3):PHP读取Excel文件的记录-方法1

  因为工作需要将Excel的文件记录读出再写入数据库中,之前使用的是VBS,可是那也不是正规的应用程序,使用PowerBuilder也可以,但是PowerBuilder毕竟只是临时使用,C#好长时间不用了,就打算使用最近学习的PHP来操作。

  下班后就开始干,折腾了将近4个小时,终于搞定了,遇到了好多的坑,快崩溃了,想一想为这些肤浅的代码所累,程序员的日子不好过!

  要使用PHP读取Excel的文件记录,查了资料都是使用PHPExcel这个文件包,并且全部都要使用Composer来安装,结果遇到了第一个坑:Composer始终安装不上PHPOffice/PHPExcel。

  首先安装Composer。

  composer require phpoffice/phpspreadsheet,后面可加版本号也可以不加。

  可能是因为我们上外网代理的缘故,始终安装不上,好不容易安装上了,使用Composer始终安装不上PHPOffice/PHPExcel,各种莫名其妙的错误提示。

  接下来我下载了JetBrains PhpStorm,在它里面进行安装,错误提示变了一些,可是还不行,打开OPENSSL和下载证书也还是不行。

  为这个耗费了3个小时,真心快崩溃了,想一想为什么别人可以呢?

  为什么一定要Composer安装?其实安装不过是将PHPOffice的信息写到配置文件,方便程序员在编程环境下进行代码提示、错误检测还有后期的运行提示,不安装又怎样?

  在网上下载一个付费的PHPOFFICE,解包到一个目录,引用一下,按照网上的方式读取,结果几十行的错误提示:

Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Shared\String.php on line 526
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Reader\Excel5.php on line 1928
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Calculation.php on line 2551
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Worksheet\AutoFilter.php on line 720
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Cell.php on line 812

  这个意思是:不推荐使用:不推荐使用带大括号的数组和字符串偏移量访问语法,这个显示有几十行,让人沮丧,因为类库是别人写的,本来打算放弃的,将网页拉到最后,竟然有数据记录读出来,真是让人惊喜,意味着只要解决这个错误就可以了。

  逐个打开有错误提示的文件,将数组的“{}”访问方式改成“[]”,错误太多了改了半个小时,问题解决了。

  正确的代码:

<?php
error_reporting(E_ALL);//报告所有错误
date_default_timezone_set('PRC');   //设置时区为中国

/** PHPExcel_IOFactory */
require_once './Classes/PHPExcel/IOFactory.php';
$excelFilename="安装记录111.xlsx";

$ext=substr($excelFilename,strripos($excelFilename,'.'));
$dataSheet=[];

if($ext=='.xlsx'){
	//按Excel2007文件格式读取
	$reader = PHPExcel_IOFactory::createReader('Excel2007');
	$reader->setReadDataOnly(true);
	$spreadSheet=$reader->load($excelFilename);
	$workSheet=$spreadSheet->getActiveSheet();
	foreach($workSheet->getRowIterator() as $key=>$row){
		$cellIterator=$row->getCellIterator();
		$cellIterator->setIterateOnlyExistingCells(false);
		foreach($cellIterator as $k=>$cell){
			$dataSheet[$key][$k]=$cell->getValue();
		}
	}
}elseif($ext=='.xls'){
	//以Excel5(Excel97-2003工作簿)的格式读取
	$reader = PHPExcel_IOFactory::createReader('Excel5');
	//加载excel文件
	$PHPExcel = $reader->load("WPS安装记录.xls");
	//读取第一个工作表
	$sheet = $PHPExcel->getSheet(0);
	//获取总行数
	$highestRow = $sheet->getHighestRow();
	//获取总列数
	$highestColumm = $sheet->getHighestColumn();

	//读取单元格的数据(从第一行,A列开始先行后列)
	for ($row = 1; $row <= $highestRow; $row++){
		for ($column = 'A'; $column <= $highestColumm; $column++) {
			$dataSheet[] = $sheet->getCell($column.$row)->getValue();
		}
	}
}else{
	exit("不能识别{$excelFilename}.\n");
}

print_r($dataSheet);

?>

  搞定!文件记录全部显示出来,既可以读取后缀为xls的文件也可以读取xlsx的文件。

  后面就是写入数据库了。

  这个方法还是有点麻烦,后面找其他的方法,至少ODBC应该是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值