.net 将html写成的table 转换成excel_Python读取二进制,HTML,XML格式存储Excel

前言

RPA设计器版本:2020.2

Python读取三种不同存储格式Excel文件

Excel文件的存储格式有多种,有我们平常公认的二进制格式,也有HTML格式,还有XML格式的等。

目前,小编接触到RPA项目的Excel文件格式主要是上述说的三种格式(二进制,HTML,XML)

这里需要注意的是:RPA设计器2020.2只支持二进制格式的Excel文件读取

Python读取二进制类型的Excel文件并返回DataFrame对象

这里我直接将重新读取Excel的操作封装成函数放在一系列函数使用,也可以使用RPA设计器自带的读取Excel组件

def get_data_from_binary_excel(file_path):    """      从 binary 二进制格式的 excel 中获取数据    :param file_path:    :return: DataFrame    """    # 读取Excel 使用 pandas 读取二进制文件 excel    pd_df = pd.read_excel(io=file_path)    # 填充 NaN 将 nan 值用空字符串替换 df = rpa_pandas.fillna(df=pd_df)    df = pd_df.fillna('')    return df

Python读取HTML类型的Excel文件并返回DataFrame对象

这里我直接将重新读取Excel的操作封装成函数放在 一系列函数 中使用

def get_data_from_html_excel(file_path, encoding='utf-8'):    """        从 html 格式的 excel 中获取数据    :param file_path:    :return: DataFrame    """    dfs = pd.read_html(file_path, encoding=encoding)    pd_df = dfs[0]    df = pd_df.fillna('')    return df

Python读取XML类型的Excel文件

思路:利用Python将Excel文件读取到内存中,再利用正则表达式从XML标签中取出Excel表格中的数据

def get_data_from_xml_excel(file_path):    """    解决 pandas.read_excel() 读取 excel 解析错误问题.    读取 excel 文件,将每行数据都放入 list 列表中。    返回值有二个,第一个是 excel 表头的长度,第二个是数据 list 集合    """    try:        with open(file_path, 'rb') as tree:            content = tree.read().decode('utf-8')            # 单位            # 单位            pattern1 = r"""(.+?)"""                        r"""|(.+?)"""            head_iter = re.finditer(pattern1, content)            head_list = []            for tpl in head_iter:                for i in range(len(tpl.groups())):                    ele = tpl.groups()[i]                    if ele is not None:                        head_list.append(ele)                        break            #             pattern2 = r"""([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""            data_iter = re.finditer(pattern2, content)            data_list = []            count = 0            for tpl in data_iter:                groups_len = len(tpl.groups())                # print(groups_len, tpl.groups(), tpl.span())                for i in range(groups_len):                    ele = tpl.groups()[i]                    # 排除不需要的脏数据                    if ele is not None and ele != 'nan' and ele != 'null':                        data_list.append(ele)                        break                    count += 1                # 若为空数据,或者 nan, null ,用空字符串替换                if count == groups_len:                    data_list.append('')                # 每次内循环后都要清零                count = 0            return len(head_list), data_list    except Exception as e:        print('解析 excel 发生异常 {}'.format(e))        return 0, []
ddc5dd808c0459a4bee2277c9ffd1f34.png
def get_data_from_xml_excel(file_path):    """    解决 pandas.read_excel() 读取 excel 解析错误问题.    读取 excel 文件,将每行数据都放入 list 列表中。    返回值有二个,第一个是 excel 表头的长度,第二个是数据 list 集合    """    try:        with open(file_path, 'rb') as tree:            content = tree.read().decode('utf-8')            # 单位            # 单位            pattern1 = r"""(.+?)"""                        r"""|(.+?)"""            head_iter = re.finditer(pattern1, content)            head_list = []            for tpl in head_iter:                for i in range(len(tpl.groups())):                    ele = tpl.groups()[i]                    if ele is not None:                        head_list.append(ele)                        break            #             pattern2 = r"""([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""                        r"""|([sSwW]*?)"""            data_iter = re.finditer(pattern2, content)            data_list = []            count = 0            for tpl in data_iter:                groups_len = len(tpl.groups())                # print(groups_len, tpl.groups(), tpl.span())                for i in range(groups_len):                    ele = tpl.groups()[i]                    # 排除不需要的脏数据                    if ele is not None and ele != 'nan' and ele != 'null':                        data_list.append(ele)                        break                    count += 1                # 若为空数据,或者 nan, null ,用空字符串替换                if count == groups_len:                    data_list.append('')                # 每次内循环后都要清零                count = 0            return len(head_list), data_list    except Exception as e:        print('解析 excel 发生异常 {}'.format(e))        return 0, []

快速了解RPA

RPA RPA技术 RPA软件 RPA培训 RPA应用 RPA机器人

领域 数据统计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值