一切福田,不離方寸,從心而覓,感無不通。

ThinkPHP5.0(六)PHP处理excel文件流程,PHPExcel

##从前台获取文件:

  • 前台代码

前台获取文件为3个input框:

  • 第一个type=“text”,用来显示获取到文件的路径;
  • 第二个type="button"点击按钮;
  • 第三个type="file"隐藏的获取文件的表单。
    流程:
    当button 触发click事件,则调用$(’#i-file’).click();触发file,当file类型的input获取到值(文件路径),则change事件将路径值显示在location。
    jQuery的 .val() – 设置或返回表单字段的值。

##后台接收文件:
获取:
通过调用request对象的file()方法获取。

移动(上传):

内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展。

其中validata()是一个格式验证,传入参数为最大字节size和限定的后缀ext

move 方法成功的话返回的是一个 \think\File 对象,你可以对上传后的文件进行后续操作,
move方法如果只传入一个路径则默认会在目录下生成时间目录,且文件名为自动生成的
例如:20180926\bbc624371e90924a8483b5421acc2e43.xlsx 时间目录20180926下的这个文件
如果不想生成时间目录,且用原始文件名,则通过传入其他参数。
原始文件名采用:move($file_url,'')

 

后续操作:
move()方法获取到的返回值$info可以执行:

  • getExtension()获得扩展名(后缀名)
  • getSaveName()域名
  • getFilename()文件名

好的可以获取文件地址通过:

 

注意:在文档中查到

getSaveName 方法返回的是图片的服务器文件地址,并不能直接用于图片的URL地址,尤其在 windows平台上必须做转换才能正常显示图片。

所以正确的获取路径的方法为:

 

getSaveName()得到的其实就是文件名加后缀名,要得到的file_url为可用的URL地址。则
$file_url .= "\\" . $url其中 **.=**为连接符 ,双斜杠为转义字符,本意为单斜杆。

则将**$file_url**传入到真正的文件文件处理的方法中,这里是import()方法。

上述过程完整代码:

 

##处理文件:
我处理的为Excel文件,经过上述步骤将一个Excel的URL地址,和其扩展名传入了处理函数import()。
一.PHPExcel的安装和引用:

注意在处理之前必须采用使用composer安装PHPExcel。
教程
Git地址
use一下全套服务:

 

或者:

 

就完成了引用!

二.开始处理:

1.通过实例化的PHPExcel_IOFactory对象调用createReader()方法获得Reader对象;

 

2.Reader对象的load方法调用URL地址获取到存放文件内容的PHPExcel

 

3.通过PHPExcelgetActiveSheet方法获取sheet当前工作sheet

sheet可以存在多个,通过索引getActiveSheet(0)

 

 

4.将sheet转化为数组进行处理,则Excel中的内容就变成了一个二维数组,方便处理了。

 

上述过程完整代码:

 

注意:
**checkExcel()**为检查表头是否和标准Excel表相同;
**insertOneJoin()**往数据库插数据。

##最后
终于完了,有点长,写的头皮发麻。

from:https://blog.csdn.net/define_LIN/article/details/81111714