二次开发万能导出excel和导入excel数据教程
1816
13

 

我们这里是导出的标准excel非table格式生成的


首先我们需要安装一下下面的插件插件安装完后不需要设置安装完成即可。

插件地址:https://x1.php168.com/appstore/content/show/id/295.html 后台搜索这个插件安装即可 不需要任何设置。


然后我们在application\common\fun 下面新建一个  Export.php
代码如下
<?php
namespace app\common\fun;
require ROOT_PATH.'plugins/phpexcel/phpexcel/PHPExcel.php';
use PHPExcel_IOFactory;
use PHPExcel;
class Export{
   /**
    * 通用数据导出类
    * @param $expTitle 导出的文件标题
    * @param $expCellName 导出的表头文件
    * @param $expTableData 导出的数据
    */
   public static function exportExcel($expTitle,$expCellName,$expTableData){
      $xlsTitle=iconv('utf-8','gb2312',$expTitle);
      $fileName=$expTitle.date('_Ymd');
      $cellNum=count($expCellName);
      $dataNum=count($expTableData);
      $objPHPExcel=new PHPExcel();
      $cellName=['A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];

      for($i=0;$i<$cellNum;$i++){
         $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1',$expCellName[$i][1]);
      }
      for($i=0;$i<$dataNum;$i++){
         for($j=0;$j<$cellNum;$j++){
            $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2),$expTableData[$i][$expCellName[$j][0]]);
         }
      }
      ob_end_clean();
      header('pragma:public');
      header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
      header("Content-Disposition:attachment;filename=$fileName.xls");
      $objWriter=\PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
      $objWriter->save('php://output');
      exit;
   }
   /**
 * 通用导入类
 * @param $file xls 文件
 * @return array|void
 */
public static function read_excel($file){
   if(!is_file($file)&&!preg_match("/\.xls$/",$file)){
      die('xls文件不存在!');
   }
   $objPHPExcel=\PHPExcel_IOFactory::load($file);//读取上传的文件
   $array=$objPHPExcel->getSheet(0)->toArray();//获取其中的数据
   return $array;
}
}

使用示例:

$xlsName='商城订单数据'; //导出的文件名
//导出文件的表头 这里的id mingceng 等要和下面的对应起来
$xlsCell=[
   ['id','编号'],
   ['mingcheng','商品名称'],
   ['shuxing','商品属性'],
   ['shuliang','数量'],
];
//导出的数据 这里的id mingcheng等要和上面的对应起来
$list=[
   [
      'id'       =>1,
      'mingcheng'=>'名称',
      'shuxing'  =>'男',
      'shuliang' =>24
   ],
   [
      'id'       =>2,
      'mingcheng'=>'名称2',
      'shuxing'  =>'男2',
      'shuliang' =>224
   ]
];
fun('Export@exportExcel',$xlsName,$xlsCell,$list);

导入实例:
xls 文件我们通过上传获取
$listdb=fun('Export@read_excel','../1.xls');
print_r($listdb);

教程地址2:https://www.kancloud.cn/php168/qibox1style/1934226  

10
赏礼
赏钱
收藏
点击回复
      全部留言
  • 13
0 赏钱 赏礼回复
  • fkenuiabcd 风格开发者 消费:55.05元 9个月前 08:38
    华为
    6楼
    cms或者论坛怎么样导入,可以出一个应用吗,收费也可以
    人在旅途 消费:35.58元 7个月前
    导入确实是个好功能
    人在旅途 消费:35.58元 3个月前
    可以
0 赏钱 赏礼回复
  • selon 程序开发者 消费:1403.01元 2020-09-18 21:39 21:396楼
    phpexcle好像好久没更新了吧
    Suifeng 消费:23.24元 小米 2020-09-18 21:48
    兼容性高
    人在旅途 消费:35.58元 4个月前
    貌似现在js的导入也可以
0 赏钱 赏礼回复
  • 袁冬 普通粉丝 消费:160.85元 2020-12-29 21:40 21:40
    华为
    6楼
    实用
0 赏钱 赏礼回复
  • 奋斗 普通粉丝 消费:11元 2020-09-18 21:06 21:066楼
    这个实用
0 赏钱 赏礼回复
更多回复
      你可能感兴趣的主题
恢复多功能编辑器
  • 3 1
  • Suifeng开发交流圈
        圈内贴子4104
    • 圈子成员433
    本圈子内的新贴

    推荐内容
    扫一扫访问手机版
    请选择要切换的马甲:

     
    网页即时交流
    QQ咨询
    咨询热线
    020-28998648