读xls处理工时

  1 #coding:utf-8
  2 '''
  3 Created on 2012-12-27
  4 
  5 @author: hhhyde
  6 '''
  7 def exec123(filepath, place, name):
  8     '''
  9     filepath:待处理xls绝对路径
 10     palce:办公场地
 11     name:待处理对象的姓名
 12     '''
 13     from pyExcelerator import parse_xls
 14     #打开xls
 15     a=parse_xls(filepath)
 16     from datetime import timedelta
 17     worktime=timedelta(hours = int(0))
 18     stand_worktime=9.5
 19     for temp_sheet in a:
 20         if place==temp_sheet[0]:
 21             palce_sheet=temp_sheet
 22             palce_data=palce_sheet[1]
 23             pps={}#{日期:记录}
 24             #整理有效数据,取出日期和打卡记录
 25             for k, v in palce_data.items():
 26                 if name==v:
 27                     #取出每条打卡记录的日期
 28                     sign_date=palce_data[(k[0], k[1]+2)]
 29                     #取出每条打卡记录
 30                     sign_sign=palce_data[(k[0], k[1]+3)]
 31                     #过滤掉无效数据(入周末加班不计入工时)
 32                     if NoWeekend(sign_date):
 33                         pps[sign_date]=sign_sign
 34             #处理数据
 35             for curdate, sign in pps.items():
 36                 print('%s\n%s'%(curdate, sign))
 37                 #sign_points=[8:01,8:04,9:22,18:22]类似这样的记录
 38                 sign_points=sign.split(' ')
 39                 #max='18:22',取最后一条记录
 40                 max=sign_points[len(sign_points)-1]
 41                 #max=(18,22),小时和分钟分离
 42                 max=max.split(':')
 43                 #min='8:01'
 44                 min=sign_points[0]
 45                 #min=(8,01)
 46                 min=min.split(':')
 47                 print('工时%s'%Exec_worktime(min, max))
 48                 worktime+=Exec_worktime(min, max)
 49                 print('-----------------')
 50     #根据打卡记录条数来决定工作天数
 51     onworkdays=len(pps)
 52     #正常工时(工时最低标准,必须达到)
 53     onworkdays=timedelta(hours = onworkdays*stand_worktime)
 54     #判断是否欠工时
 55     if onworkdays>worktime:
 56         return '欠工时--->%s'%(onworkdays-worktime)
 57     else:
 58         return '剩余工时--->%s'%(worktime-onworkdays)
 59 
 60 def Exec_worktime(min = None, max = None):
 61     '''
 62     min:第一次打卡记录
 63     max:最后一次打卡记录
 64     '''
 65     from datetime import timedelta
 66     max=timedelta(hours = int(max[0]), minutes = int(max[1]))#最后打卡时间
 67     min=timedelta(hours = int(min[0]), minutes = int(min[1]))#第一次打卡时间
 68     eight=timedelta(hours = 8)#上班时间
 69     off=timedelta(hours = int(18))#18点
 70     nine=timedelta(hours = int(9))#9点
 71     workout=timedelta(hours = int(17), minutes = 30)#17:30
 72     worktime=timedelta(hours = int(0))#默认
 73     minus_wt=timedelta(hours = int(0))#负工时,默认
 74     positive_wt=timedelta(hours = 9, minutes = 30)#正工时,默认
 75 
 76     #第一次打卡在8:00后超出时间计入负工时,9点后不计,使用忘打卡
 77     if min>eight and min<nine:
 78         minus_wt=min-eight
 79     #第一次打卡在8:00前,0工时
 80     else:
 81         pass
 82     #最后打卡时间在18点后剩余时间计入正工时
 83     if max>off:
 84         positive_wt+=max-off
 85     #否则不计入正工时
 86     else:
 87         pass
 88 #    print(minus_wt)
 89 #    print(positive_wt)
 90     worktime=positive_wt-minus_wt
 91     return worktime
 92 
 93 def NoWeekend(date):
 94     '''
 95     date:传入时间,格式类似'2013-02-22'
 96     '''
 97     import datetime
 98     a=date.split('-')
 99     weekday=datetime.date(int(a[0]), int(a[1]), int(a[2]))
100 #    if weekday.isoweekday()<=5:
101 #        return True
102 #    else:
103 #        return False
104 #    
105     return True if weekday.isoweekday()<=5 else False
106 
107 if __name__=='__main__':
108 #    print(NoWeekend('2013-03-02'))

 

转载于:https://www.cnblogs.com/kj8550/archive/2013/03/01/2938634.html

在 MATLAB 中取 `.xls` 格式的 Excel 文件可以使用 `xlsread` 函数。该函数支持从 Excel 文件中取数据、文本和公式。以下是详细的使用方法和示例。 ### 取Excel文件中的数值数据 使用 `xlsread` 函数可以取 Excel 文件中的数值数据。函数的基本语法如下: ```matlab data = xlsread('filename.xls'); ``` 此命令将取 `filename.xls` 文件中的第一个工作表中的所有数值数据,并将其存储在一个矩阵中。例如: ```matlab data = xlsread('example.xls'); ``` 如果 Excel 文件中包含非数值数据(如文本或空单元格),这些内容将被忽略,仅保留数值数据。 ### 取Excel文件中的文本数据 如果需要取 Excel 文件中的文本数据,可以使用以下语法: ```matlab [~, ~, raw] = xlsread('filename.xls'); ``` 其中,`raw` 是一个元胞数组,包含 Excel 文件中所有单元格的原始数据(包括文本和数值)。例如: ```matlab [~, ~, raw] = xlsread('example.xls'); ``` ### 取指定工作表或范围的数据 如果需要取 Excel 文件中特定的工作表或单元格范围,可以使用以下语法: ```matlab data = xlsread('filename.xls', 'SheetName'); ``` 或者 ```matlab data = xlsread('filename.xls', 'Range'); ``` 例如,取名为 `Sheet1` 的工作表中的所有数值数据: ```matlab data = xlsread('example.xls', 'Sheet1'); ``` 取 `A1:B10` 范围内的数据: ```matlab data = xlsread('example.xls', 'A1:B10'); ``` ### 示例代码 以下是一个完整的示例,演示如何取 `.xls` 文件中的数值数据和文本数据: ```matlab % 取数值数据 data = xlsread('example.xls'); % 取原始数据(包括文本和数值) [~, ~, raw] = xlsread('example.xls'); % 显示数值数据 disp('数值数据:'); disp(data); % 显示原始数据 disp('原始数据:'); disp(raw); ``` ### 注意事项 - `xlsread` 函数在取 Excel 文件时,需要 Excel 软件安装在计算机上。如果未安装 Excel,可以使用 `readtable` 函数(适用于 MATLAB R2013b 及更高版本)来取 Excel 文件。 - 如果使用的是较新版本的 MATLAB(如 R2019a 或更高版本),可以考虑使用 `readtable` 或 `readmatrix` 函数来替代 `xlsread`,因为这些函数提供了更好的性能和灵活性。 ### 相关问题 1. 如何使用MATLAB取.xlsx格式的Excel文件? 2. 如何在MATLAB中取.nc文件并提取特定区域的数据? 3. 如何在MATLAB中将数据写入Excel文件? 4. 如何在MATLAB中处理包含混合数据类型的Excel文件? 5. 如何在MATLAB中批量取多个Excel文件并整合数据?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值