栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

Python读取Excel未隐藏的数据

Python 更新时间:发布时间: 百科书网 趣学号

前言

在UIPATH机器人开发中,读取用户发过来的Excel文件时,发现用户按模板提供的数据文件,有时候用户并不把旧数据删除,而是把旧数据隐藏,然后再填写上新数据。这样就导致重新读取了旧数据,有可能录入系统重复数据,拖慢系统执行效率。而UIPATH中EXCEL活动并没有发现能识别隐藏数据行的功能。

简述

介于上述问题,对于传统高级开发语言,处理EXCEL还是很强大的,所最这里选择的解决办法就是通过引用第三方程序来处理。UIPATH可引入VB脚本,Python脚本。这里选择Python脚本。

Python处理Excel的方法有很多,经过对比对于本文描述问题,使用win32com处理比较合适。

Excel的行列隐藏,实际上是对应的高度或宽度为0。于是可以通过读取行或列的高度或*宽度,判断是否为0来判断它是否是隐藏状态。

于是先安装win32com组件。

Pip install win32com

注意使用此控件时,一定要确保当前EXCEL是关闭状态,否则容易报异常。

步骤
  1. 引入控件:
Import win32com
From win32com.client import Dispatch, constants
Import os

  1. 创建处理函数

‘file_name:含有隐藏行的Excel文件

‘sheet_name:数据表单名

GetSupplerData(file_name, sheet_name=”Sheet1”)

  1. 返回结果

返回一个二维数据,保存读取到的Excel中未隐藏的所有数据。

  1. 代码
    # -*- coding:utf-8 -*-
    
    import win32com
    from win32com.client import Dispatch, constants
    import os
    
    
    def GetSupplerData(file_name, sheet_name):
        app = win32com.client.Dispatch("Excel.Application")
        wkb = app.Workbooks.Open(file_name)
        sht = wkb.Worksheets(sheet_name)
    
        rng = sht.UsedRange
    
        data = []
        for row in rng.Rows:
            if row.Height > 0.0:
                # Object2List(row.Value)
                data.append(list(list(row.Value)[0]))
        
        wkb.Close(False)
        app.Quit()
        
        if len(data) > 1:
            return [x for x in data[2:] if x[2] != None]
        else:
            return data

  1. 验证结果:

                添加如下脚本到代码中,两个参数请根据实际情况进行修改。

if __name__ == '__main__':
    result = GetCustomerData(
        'D:RPA客户主数据填写模板6.11.xlsx',
        '客户主数据-基本数据')
    print(result)

正确执行后,可看到输出结果为EXCEL中非隐藏的数据。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/987111.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号