您的位置:来学习素材网 > 办公软件 > excel教程

猜你喜欢

2023-12-27 14:58
PHPExcel 表格导入数据代码解析(二)
[文章导读]PHPExcel 表格导入数据代码解析(二)

前面大概讲了phpexcel用表格导入数据到数据库中的教程,今天会详细剖析函数代码,话不多说,先上代码:

public function upload() {
   ini_set('memory_limit','1024M');
   //设定一个脚本所能够申请到的最大内存字节数,这有利于写的不好的脚本消耗服务器上的可用内存
   if (!empty($_FILES)) {
       $config = array(
           'exts' => array('xlsx','xls'),
           'maxSize' => 3145728000,
           'rootPath' =>"./Public/",
           'savePath' => 'Uploads/',
           'subName' => array('date','Ymd'),
       );//设置相关参数
       $upload = new \Think\Upload($config);//定义tp的Upload对象
       if (!$info = $upload->upload()) {     //$upload调用upload()函数并赋值给$info
           $this->error($upload->getError());
       }
       vendor("PHPExcel.PHPExcel");//thinkphp3.2.3中使用Vendor加载第三方类库
       $file_name=$upload->rootPath.$info['photo']['savepath'].$info['photo']['savename']; //文件名称
       $extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));//判断导入表格后缀格式
       if ($extension == 'xlsx') {
           $objReader =\PHPExcel_IOFactory::createReader('Excel2007');
           //创建一个特定的读取类,读取类型为‘Excel2007’
           $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');//读取文件$file_name
       } else if ($extension == 'xls'){
           $objReader =\PHPExcel_IOFactory::createReader('Excel5');
           $objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
       }
       $sheet =$objPHPExcel->getSheet(0);//getSheet()获取表集合

       $highestRow = $sheet->getHighestRow();//取得总行数
       $highestColumn =$sheet->getHighestColumn(); //取得总列数
       D('pro_info')->execute('truncate table pro_info');
       for ($i = 2; $i <= $highestRow; $i++) {
           $data['pId'] =$objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();
           $data['pName'] =$objPHPExcel->getActiveSheet()->getCell("B" .$i)->getValue();
           $data['pPrice'] =$objPHPExcel->getActiveSheet()->getCell("C" .$i)->getValue();
           $data['pCount'] = $objPHPExcel->getActiveSheet()->getCell("D". $i)->getValue();
           D('pro_info')->add($data);
       }
       $this->success('导入成功!');
   } else {
       $this->error("请选择上传的文件");
   }
}

主要是流程图如下:

在上面代码上基本上都有注释,看不懂的没关系,下面我就几个点聊聊好了:

$upload = new \Think\Upload($config);//实例化上传类

TP文件上传:

属性描述
maxSize 文件上传的最大文件大小(以字节为单位),0为不限大小
rootPath 文件上传保存的根路径
savePath 文件上传的保存路径(相对于根路径)
saveName 上传文件的保存规则,支持数组和字符串方式定义
saveExt 上传文件的保存后缀,不设置的话使用原文件后缀
replace 存在同名文件是否是覆盖,默认为false
exts 允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
mimes 允许上传的文件类型(留空为不限制),使用数组或者逗号分隔的字符串设置,默认为空
autoSub 自动使用子目录保存上传文件 默认为true
subName 子目录创建方式,采用数组或者字符串方式定义
hash 是否生成文件的hash编码 默认为true
callback 检测文件是否存在回调,如果存在返回文件信息数组

设置好上传的参数后,就可以调用Think\Upload类的upload方法进行附件上传,如果失败,返回false,并且用getError方法获取错误提示信息;如果上传成功,就返回成功上传的文件信息数组。

  1. $info = $upload->upload();

  2. if(!$info) {// 上传错误提示错误信息

  3. $this->error($upload->getError());

  4. }else{// 上传成功 获取上传文件信息

  5. foreach($info as $file){

  6.        echo $file['savepath'].$file['savename'];

  7. }

  8. }

属性描述
key 附件上传的表单名称
savepath 上传文件的保存路径
name 上传文件的原始名称
savename 上传文件的保存名称
size 上传文件的大小
type 上传文件的MIME类型
ext 上传文件的后缀类型
md5 上传文件的md5哈希验证字符串 仅当hash设置开启后有效
sha1 上传文件的sha1哈希验证字符串 仅当hash设置开启后有效

文件上传成功后,就可以使用这些文件信息来进行其他的数据操作,例如保存到当前数据表或者单独的附件数据表

  1. $model = M('Photo');

  2. // 取得成功上传的文件信息

  3. $info = $upload->upload();

  4. // 保存当前数据对象

  5. $data['photo'] = $info[0]['savename'];

  6. $data['create_time'] = NOW_TIME;

  7. $model->add($data);

PHPExcel_IOFactory 读取文件:

vendor("PHPExcel.PHPExcel");
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
//创建一个特定的读取类,读取类型为‘Excel2007’
$objPHPExcel =$objReader->load($file_name, $encode = 'utf-8');
//读取文件$file_name

1.使用 PHPExcel_IOFactory 读取文件

$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);        

2.使用一个特定的读取类,读取文件

$objReader = new PHPExcel_Reader_Excel5();                

$objPHPExcel = $objReader->load($inputFileName);

3.使用 PHPExcel_IOFactory 创建一个特定的读取类

$objReader = PHPExcel_IOFactory::createReader($inputFileType);

$objPHPExcel = $objReader->load($inputFileName);

读取类型有:

$inputFileType = 'Excel5';

$inputFileType = 'Excel2007';

$inputFileType = 'Excel2003XML';

$inputFileType = 'OOCalc';

$inputFileType = 'SYLK';

$inputFileType = 'Gnumeric';

$inputFileType = 'CSV';

4.使用 PHPExcel_IOFactory 来鉴别文件应该使用哪一个读取类

$inputFileType = PHPExcel_IOFactory::identify($inputFileName);

$objReader = PHPExcel_IOFactory::createReader($inputFileType);

$objPHPExcel = $objReader->load($inputFileName);

获取表集合:

$sheet =$objPHPExcel->getSheet(0);//getSheet()获取表集合

$highestRow = $sheet->getHighestRow();//取得总行数
$highestColumn =$sheet->getHighestColumn(); //取得总列数

循环读取数据:

Excel技巧

声明:本站拒绝任何弹窗、插件以及广告联盟的广告,本QQ号(254031582)只解决会员问题,素材失效问题,软件使用问题一律不回。

为广大设计朋友提供平面设计素材和教材、PSD素材、C4D模型、3DMAX模型、AE模板、矢量模板等下载

苏ICP备2023039977号-2

Copyright © 2010-2020laixuexi.cc. All Rights Reserved .