因为工作需要将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
这个意思是:不推荐使用:不推荐使用带大括号的数组和字符串偏移量访问语法,这个显示有几十行,让人沮丧,因为类库是别人写的,本来打算放弃的,将网页拉到最后,竟然有数据记录读出来,真是让人惊喜,意味着只要解决这个错误就可以了。
逐个打开有错误提示的文件,将数组的“{}”访问方式改成“[]”,错误太多了改了半个小时,问题解决了。
搞定!文件记录全部显示出来,既可以读取后缀为xls的文件也可以读取xlsx的文件。
后面就是写入数据库了。
这个方法还是有点麻烦,后面找其他的方法,至少odbc应该是可以的。
补充
php其实不仅能读取excel文件的记录,还可以生成excel文件
下面这代码中函数arraytoexcel的功能是把一个二维数组的数据生成一个excel文件,并且保存在服务器上。
如果你不希望保存在服务器上,希望生成以后直接下载到客户端,可以在输出文件的时候加入下面的代码,而不使用 $objwriter->save($file);
代码如下:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。