PHP导入Excel考勤表

PHP导入Excel考勤表

  • 安装PHPExcel
    • 引入IOFactory.php
    • 考勤表如下
    • 上传,接收,移动 Excel文件
    • 加载文件
    • 获取Excel中想要的数据
      • 然后把得到的数据放入数据库中进行后续操作;

安装PHPExcel

使用composer安装:

composer require phpoffice/phpexcel

引入IOFactory.php

       require_once(ROOT_PATH . 'vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php');

考勤表如下

Excel考勤表:
在这里插入图片描述

上传,接收,移动 Excel文件

    <div class="layui-form-item" style="width: 99%"><form action="{:url('index/Attesgerbdfb/attendancsdfsscel_in')}" enctype="multipart/form-data" method="post"><input type="file" name="excel" /><span>覆盖&nbsp;</span><input type="checkbox" value="1" name="yes" id="yes" checked><span>&nbsp;&nbsp;不覆盖&nbsp;</span><input type="checkbox" value="2" name="no" id="no"><input type="submit" value="上传" /></form></div>
$file = request()->file('excel');
ini_set('max_execution_time', '0');
$info = $file->move(ROOT_PATH . 'public' . DS . 'upload'.DS.'excel');
// 成功上传后 获取上传信息
$path =  $info->getSaveName();// 获取文件保存路径
$extension = $info->getExtension();
if( $extension =='xlsx' )
{
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
}else{
$objReader = PHPExcel_IOFactory::createReader('Excel5');
}

加载文件

//加载excel文件
$filename = ROOT_PATH . 'public' . DS . 'upload'.DS.'excel'.DS.$path;$objReader ->setReadDataOnly(true); //只读取数据,忽略所有空白行$objPHPExcel = $objReader->load($filename);//获取excel文件$sheetCount = $objPHPExcel->getSheetCount();// 获取工作表的数目;

获取Excel中想要的数据

// 组装获取单张sheet考勤数据的三个数组;
$one = array('A','B','D','G','I','K','M');
$two = array('P','Q','S','V','X','Z','AB');
$three = array('AE','AF','AH','AK','AM','AO','AQ');
//TODO sheet需要超过两个~
$arr = array();
$brr = array();
$crr = array();
for($i=2;$i<$sheetCount;$i++){
//不需要最后两张表;
$sheet = $objPHPExcel->getSheet($i); //激活当前的表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数// 此sheet的人名 部门 日期
$arr[$i]['depart'] = $sheet->getCell("B4")->getValue();
$arr[$i]['username'] = $sheet->getCell("J4")->getValue();
$arr[$i]['date'] = $sheet->getCell("B5")->getValue();
$brr[$i]['depart'] = $sheet->getCell("Q4")->getValue();
$brr[$i]['username'] = $sheet->getCell("Y4")->getValue();
$brr[$i]['date'] = $sheet->getCell("Q5")->getValue();
$crr[$i]['depart'] = $sheet->getCell("AF4")->getValue();
$crr[$i]['username'] = $sheet->getCell("AN4")->getValue();
$crr[$i]['date'] = $sheet->getCell("AF5")->getValue();// 此sheet的某个员工的考勤记录$drr = array();
$err = array();
$frr = array();
for($j=13;$j<=$highestRow;$j++)
{
//当前sheet第一个人的考勤记录
foreach ($one as $k_one=>$v_one){
$d = $sheet->getCell("A".$j)->getValue();if(empty($d)){break;}
$x = $sheet->getCell($v_one.$j)->getValue();
if(is_float($x)){
$drr[$j][$k_one] = gmdate('H:i',\PHPExcel_Shared_Date::ExcelToPHP($x));}else{
$drr[$j][$k_one] = $sheet->getCell($v_one.$j)->getValue();}}
//当前sheet第二个人的考勤记录
foreach ($two as $k_two=>$v_two){$e = $sheet->getCell("P".$j)->getValue();if(empty($e)){break;}$y = $sheet->getCell($v_two.$j)->getValue();if(is_float($y)){
$err[$j][$k_two] = gmdate('H:i',\PHPExcel_Shared_Date::ExcelToPHP($y));}else{$err[$j][$k_two] = $sheet->getCell($v_two.$j)->getValue();}}//当前sheet第三个人的考勤记录foreach ($three as $k_three=>$v_three){
$f = $sheet->getCell("AE".$j)->getValue();if(empty($f)){break;}
$z = $sheet->getCell($v_three.$j)->getValue();
if(is_float($z)){
$frr[$j][$k_three] = gmdate('H:i',\PHPExcel_Shared_Date::ExcelToPHP($z));}else{
$frr[$j][$k_three] = $sheet->getCell($v_three.$j)->getValue();}}}$arr[$i]['attend'] = $drr;$brr[$i]['attend'] = $err;$crr[$i]['attend'] = $frr;}
// $arr $brr $crr 整合数组
$zrr = array_merge($arr,$brr,$crr);

然后把得到的数据放入数据库中进行后续操作;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382351.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

navicat卸载干净

1、控制面板卸载 2、删除对应的文件夹 3、删除注册表 全部删除就好了

企业时代下的汽车4S店形势分析

据网上数据显示&#xff0c;2022年约有2000家汽车4S店闭店退网&#xff0c;这一数据不由令人惊叹&#xff01; 疫情放开后&#xff0c;原以为汽车经销商的春天也即将来临&#xff0c;可它们有些已经死在了半路上。 2023年伊始&#xff0c;经销商大戏以一则破产消息开幕——浙…

关于Anaconda卸载干净的问题【已解决】

在卸载anaconda时&#xff0c;为了卸载干净&#xff0c;一般会在win10自带的 应用与功能中选择anaconda 进行卸载。 &#xff0c;也可以用anaconda文件中卸载程序Uninstall-Anaconda3.exe进行卸载。 然后再把相应路径下的剩余文件删掉。 但是&#xff01; 这还不够&#xff0c…

anaconda卸载后重装的悲剧

在经历了无比绝望的一天后&#xff0c;我终于在意志消磨完的最后一刻成功完成了anaconda的卸载重装&#xff0c;这一天过的可以说是非常绝望了。上午还在开开心心的准备下载pytorch库进行学习&#xff0c;结果在更新依赖库的时候没有使用虚拟环境结果导致anaconda崩了&#xff…

Anaconda卸载与安装

因为重新分配磁盘&#xff0c;导致anaconda的各种路径出现了问题&#xff0c;费了九牛二虎之力把所有的路径配置好之后发现jupyter内核竟然不能正常启动…一直没办法正常解决&#xff08;如果有懂的大佬可以评论指导一下&#xff09;&#xff0c;于是最终还是选择卸载重新安装一…

anaconda 完全卸载——重装

由于安装环境的时候不知道什么地方出错了&#xff0c;导致conda下载不了新的包&#xff0c;也不能更新现有的包&#xff0c;所以采取卸载anaconda并重装的方法&#xff08;简答粗暴&#xff09; 卸载 在网上搜集资料&#xff0c;发现卸载anaconda的方法五花八门&#xff0c;而…

Anaconda彻底卸载

Anaconda彻底卸载 Anaconda有时候安装会出现错误&#xff08;用这种方法可以彻底卸载Anaconda&#xff09; 本人亲测有效 在学习Anaconda的过程中 我遇到的问题 下载Anaconda时第一次未安装成功&#xff0c;第二次安装时遇到残留文件 所以做了此教程分享&#xff01; 控制面…

彻底卸载anaconda

彻底卸载anaconda 用anaconda更改我的python版本&#xff0c;就是出现了冻结无法更改等等之类的问题&#xff0c;担心更新anaconda还是会出错&#xff0c;于是打算卸载anaconda&#xff0c;重新下载一个安装。 ①方法一&#xff1a; 可以直接去控制面板—程序—卸载 可能卸载不…

Anaconda的卸载及安装(图文详解)

目录 Anaconda的相关操作 一&#xff1a;Anaconda环境相关操作 1&#xff1a;查看环境 2&#xff1a;创建环境 3&#xff1a;删除环境 4&#xff1a;激活环境 5&#xff1a;退出环境 6&#xff1a;查看当前环境中安装的包 7&#xff1a;删除环境中的已安装的包 8&…

Anaconda完全卸载教程(Windows10系统)

前言&#xff1a;任何软件在卸载的时候&#xff0c;不要直接用目录下自带的uninstall.exe卸载程序&#xff0c;这样子肯定是卸载不干净滴。最近在做项目用到了anaconda环境&#xff0c;做完就卸载anaconda&#xff0c;在网上搜了很多教程以及参考了官方文档&#xff0c;整理了一…

彻底卸载navicat

彻底卸载navicat 下载navicat的时候会有这样的经历。重新安装后上次使用痕迹还会存在。该帖记录一下彻底删除navicat的步骤。 第一步&#xff1a;通过控制台卸载navicat  通过winr&#xff0c;输入control打开控制台。卸载软件。 第二步&#xff1a;删除无用文件。  1. C:\P…

[转载] 怎样彻底卸载anaconda?

彻底卸载anaconda的方法&#xff1a;1、安装Anaconda-Clean package&#xff1b;2、执行【anaconda-clean --yes】命令&#xff1b;3、运行Uninstall-Anaconda3.exe程序即可。 1、安装 Anaconda-Clean package 记得要以管理员身份打开 打开 Anaconda Prompt&#xff0c; 输…

anaconda完全卸载方法

完全卸载步骤 进入命令行模式删除虚拟环境下载anaocnda-clean执行anaconda-clean --yes执行卸载程序删除剩余相关文件删除注册表 由于自己的anaconda版本太老了一直没更新&#xff0c;想更新一下&#xff0c;但未更新成功&#xff0c;于是想要重新卸载安装&#xff0c;本次卸载…

重复delete 对象指针后的 异常调用栈怪异 解析

Release版VC6 MFC程序 程序正常退出时得到一个如下异常调用栈&#xff1a;​ 0:000> kb# ChildEBP RetAddr Args to Child WARNING: Frame IP not in any known module. Following frames may be wrong. 00 0019eb94 76124f2f 00c3afc8 0019ebdc 001…

递归最小二乘法、增广最小二乘法、带遗忘因子的递归增广最小二乘法

一、递归最小二乘法 递推最小二乘法&#xff1a;当矩阵维数增加时&#xff0c;矩阵求逆运算计算量过大&#xff0c;而且不适合在线辨识。为了减少计算量&#xff0c;并且可以实时地辨识出动态系统的特性&#xff0c;可以将最小二乘法转换成参数递推的估计。 取前N组数据&…

ICLR2019 | 模型训练会发生了大量的、反复的样本遗忘现象,如何解决?

每天给你送来NLP技术干货&#xff01; 来自&#xff1a;SimpleAI 标题&#xff1a;An Empirical Study of Example Forgetting during Deep Neural Network Learning会议&#xff1a;ICLR-2019机构&#xff1a;CMU&#xff0c;MSR&#xff0c;MILA 一句话总结&#xff1a;学了忘…

艾宾浩斯遗忘曲线PHP,【干货】~~~艾宾浩斯遗忘曲线~~~

原标题&#xff1a;【干货】~~~艾宾浩斯遗忘曲线~~~ 双11活动你心动了吗&#xff1f;(点击查看 ) 0.6折起&#xff01;11.11狂欢价&#xff01;最高直降4.2k&#xff01; 为什么越到考试&#xff0c;记忆越不给力&#xff1f; 今天复习的内容是教师招聘考试中的高频考点——保持…

灾难性遗忘/增量学习的研究现状

灾难性遗忘/增量学习的研究现状 一. 灾难性遗忘(catastrophic forgetting)为什么会发生&#xff1f;二. 增量学习的概念2.1. 研究领域2.1. 增量学习的上下限 三. 增量学习的方法3.1. 基于正则化的增量学习&#xff08;基于Loss&#xff09; --《Learning without Forgetting》 …

遗忘因子递推最小二乘法估计

%遗忘因子递推最小二乘参数估计&#xff08;FFRLS&#xff09; clear all; close all; a[1 -1.5 0.7]’; b[1 0.5]’; d3; %对象参数 nalength(a)-1; nblength(b)-1; %na、nb为A、B阶次 L1000; %仿真长度 ukzeros(dnb,1); %输入初值&#xff1a;uk(i)表示u(k-i) ykzeros(na,1…

怎样利用遗忘曲线来进行有效复习?

遗忘曲线由德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现&#xff0c;描述了人类大脑对新事物遗忘的规律。人体大脑对新事物遗忘的循序渐进的直观描述&#xff0c;人们可以从遗忘曲线中掌握遗忘规律并加以利用&#xff0c;从而提升自我记忆能力。该曲线对人类记忆认知研究产生了…