python3 分析excel文件

1 代码示例

import os
import openpyxl
import argparse
from datetime import datetime

# 设置命令行参数解析
parser = argparse.ArgumentParser(description='Scan for devices from a specific company in Excel files.')
#parser.add_argument('directory_path', type=str, help='The path to the directory containing Excel files.')
parser.add_argument('company_name', type=str, help='The company name to filter devices by.')
args = parser.parse_args()

# 指定目录路径和公司名称
#directory_path = args.directory_path
directory_path = '/home/device_info' 
company_name = args.company_name #小米

# 初始化一个字典,用于存储设备信息
# 格式为 {device_model: (device_name, device_vendor, expire_date, file_name)}
xiaomi_devices = {}

# 遍历目录中的所有文件
for filename in os.listdir(directory_path):
    # 检查文件扩展名是否为xlsx
    if filename.endswith('.xlsx'):
        file_path = os.path.join(directory_path, filename)
        try:
            wb = openpyxl.load_workbook(file_path)
            ws = wb.active
            # 遍历工作表中的每一行,从第三行开始
            for row in ws.iter_rows(min_row=3, values_only=True):
                # 检查申请单位或生产企业是否为指定公司
                if company_name in row[4] or company_name in row[5]:
                    device_model = row[3]
                    device_name = row[2]
                    device_vendor = row[5] if row[5] else '未知厂家'
                    # 已经是datetime对象
                    expire_date = row[7] if row[7] else '1900/1/1'
                    # 尝试将有效期字符串转换为datetime对象,如果失败则使用字符串'无许可有效期'
                    #try:
                    #    expire_date = datetime.strptime(expire_date_str, '%Y/%m/%d')
                    #except ValueError:
                    #    expire_date = expire_date_str

                    # 如果设备型号已存在,比较有效期,保留较晚的记录
                    if device_model in xiaomi_devices:
                        _, _, old_expire_date, _ = xiaomi_devices[device_model]
                        if expire_date > old_expire_date:
                            xiaomi_devices[device_model] = (device_name, device_vendor, expire_date, filename)
                    else:
                        # 如果设备型号不存在,添加新记录
                        xiaomi_devices[device_model] = (device_name, device_vendor, expire_date, filename)

            wb.close()
        except Exception as e:
            print(f"处理文件 {filename} 时发生错误: {e}")

# 打印所有设备信息
for device_model, (device_name, device_vendor, expire_date, file_name) in xiaomi_devices.items():
    print(f'文件: {file_name}, 设备名称: {device_name}, 设备型号: {device_model}, 生产厂家: {device_vendor}, 许可有效期: {expire_date}')


2.示例文件

-电信设备名录(2023年7月)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值