Excel相关操作| openpyxl | Python

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel相关操作| openpyxl | Python相关的知识,希望对你有一定的参考价值。

# !/usr/bin/python
# -*-coding:utf-8-*-
from openpyxl import load_workbook
from utils.handle.save_excel_union import save_to_excel

# 1.读取sqlResult文件
def sqlResult(path, sheetname, max_row):
    # 打开指定文件wrok, 选择sheet;
    wb = load_workbook(path)
    sheet = wb.get_sheet_by_name(sheetname)
    list_sqlResult = []
    for i in range(1, int(max_row)):
        i+=1
        dict_sqlResult = {}
        dict_sqlResult[mer_code] = sheet[D{}.format(i)].value # --> 指定单元格数据
        # 获取agent_user_id
        agent_user_id = sheet[G{}.format(i)].value
        if agent_user_id == 3:
            agent_user_id = u闪银掌柜
        elif agent_user_id == 4:
            agent_user_id = u创富通
        elif agent_user_id == 6:
            agent_user_id = u一键联支付
        elif agent_user_id == None:
            agent_user_id = ‘‘
        elif agent_user_id == 14:
            agent_user_id = u厦门吉事多
        elif agent_user_id == 13:
            agent_user_id = u中财支付
        elif agent_user_id == 12:
            agent_user_id = u内蒙古懒人网络科技有限公司
        elif agent_user_id == 11:
            agent_user_id = u快汇支付
        elif agent_user_id == 10:
            agent_user_id = u创富通002
        elif agent_user_id == 9:
            agent_user_id = u星译付信息科技南通有限公司
        elif agent_user_id == 8:
            agent_user_id = u云付泰
        elif agent_user_id == 7:
            agent_user_id = u莘丽支付
        dict_sqlResult[agent_user_id] = agent_user_id
        list_sqlResult.append(dict_sqlResult)
    # print(list_sqlResult)
    return list_sqlResult

# 执行函数
# sqlResult(‘/home/python/excel_exe/excel_docs/sqlResult_1576221.xlsx‘, ‘sqlResult_1576221‘)


# 2.读取对账单
def read_checkbox(path, sheetname, max_row):
    # 打开指定文件wrok, 选择sheet;
    wb = load_workbook(path)
    sheet = wb.get_sheet_by_name(sheetname)

    list_check = []
    for i in range(1, int(max_row)):
        i+=1
        dict_check = {}
        dict_check[u商户号] = sheet[J{}.format(i)].value # --> 指定单元格数据
        dict_check[u费率] = sheet[K{}.format(i)].value
        dict_check[u结算费率] = 0.025
        dict_check[u交易金额] = sheet[M{}.format(i)].value
        dict_check[u交易时间] = sheet[C{}.format(i)].value
        # dict_check[‘结算金额‘] = (dict_check[‘费率‘]-dict_check[‘结算费率‘])*1280
        list_check.append(dict_check)
    return list_check

# 执行函数
# read_checkbox(‘/home/python/excel_exe/excel_docs/1101-1130对账-首瀚无卡优惠类.xlsx‘, ‘账账通终端交易查询‘)


# 3.对比产生最终数据
# 最后要的数据
final_list = list()
# 获取两个列表对象

# 调用函数1,读取sqlResult文件
check_obj = read_checkbox(u/home/python/excel_exe/excel_docs/1101-1130对账-首瀚无卡优惠类.xlsx, u账账通终端交易查询, 4603)
# 调用函数2,读取对账单
sqlResult_obj = sqlResult(/home/python/excel_exe/excel_docs/sqlResult_1576221.xlsx, sqlResult_1576221, 30786)


for check_dict in check_obj:
    mer_code = check_dict[u商户号]

    for sqlResult in iter(sqlResult_obj):
        # 如果mer_code不在另一个文件中呢?
        # if mer_code not in sqlResult.

        if mer_code == sqlResult[mer_code]:
            check_dict[u第三方代理] = sqlResult[agent_user_id]
            # print(check_dict[‘第三方代理‘])
            final_list.append(check_dict)


# 转移excel表中
save_to_excel(/home/python/excel_exe/excel_docs/final_excel.xlsx, final_list)
# !/usr/bin/python
# -*-coding:utf-8-*-
from openpyxl import Workbook


# 动态保存
def dynamic_save(wb, i, field, agent, index):
    all_sheets = wb.get_sheet_names()
    print(agent)
    if agent not in all_sheets:
        # create一张sheet
        wb.create_sheet(agent, index=index)
    sheet = wb.get_sheet_by_name(agent)
    print(sheet)
    # 如果sheet存在,不添加
    sheet[A%d % i] = agent
    print(u到这里了吗-----------------)
    sheet[B%d % i] = field[u商户号]
    sheet[C%d % i] = field[u费率]
    sheet[D%d % i] = 0.25%
    sheet[E%d % i] = field[u交易金额]
    sheet[F%d % i] = "=ROUND((C%d-D%d)*E%d, 2)" % (i, i, i)
    sheet[G%d % i] = field[u交易时间]
    return sheet

# 静态保存
def static_save(sheet):
    sheet[A1] = u"第三方代理"
    sheet[B1] = u"商户号"
    sheet[C1] = u"费率"
    sheet[D1] = u"结算费率"
    sheet[E1] = u"交易金额"
    sheet[F1] = u"结算金额"
    sheet[G1] = u"交易时间"


# 4.存到excel表中
def save_to_excel(dest_filename, final_list):
    # 新建文件
    wb = Workbook()
    # 创建当前工作表
    sheet = wb.active
    sheet.title = u"创富通"

    # 静态保存
    static_save(sheet)

    i_c = 2
    i_syzg = 2
    i_yj = 2
    i_xmjsd = 2
    i_z = 2
    i_n = 2
    i_k = 2
    i_c2 = 2
    i_xy = 2
    i_slzf = 2
    i_yft = 2
    i_wcl = 2
    for field in final_list:
        if field[u第三方代理] == u创富通:
            sheet = wb.get_sheet_by_name(u创富通)
            sheet[A%d% i_c] = u创富通

            sheet[B%d % i_c] = field[u商户号]
            sheet[C%d % i_c] = field[u费率]
            sheet[D%d % i_c] = 0.25%
            sheet[E%d % i_c] = field[u交易金额]
            sheet[F%d % i_c] = "=ROUND((C%d-D%d)*E%d, 2)" % (i_c, i_c, i_c)
            sheet[G%d % i_c] = field[u交易时间]
            i_c += 1

        elif field[u第三方代理] == u闪银掌柜:
            # 动态数据函数
            sheet = dynamic_save(wb, i_syzg, field, field[u第三方代理], 1)

            i_syzg += 1

            # 静态数据函数
            static_save(sheet)


        elif field[u第三方代理] == u一键联支付:
            # 动态数据函数
            sheet = dynamic_save(wb, i_yj, field, field[u第三方代理], 2)

            i_yj += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u厦门吉事多:
            # 动态数据函数
            sheet = dynamic_save(wb, i_xmjsd, field, field[u第三方代理], 3)

            i_xmjsd += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u中财支付:
            # 动态数据函数
            sheet = dynamic_save(wb, i_z, field, field[u第三方代理], 4)

            i_z += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u内蒙古懒人网络科技有限公司:
            # 动态数据函数
            sheet = dynamic_save(wb, i_n, field, field[u第三方代理], 5)

            i_n += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u快汇支付:
            # 动态数据函数
            sheet = dynamic_save(wb, i_k, field, field[u第三方代理], 6)

            i_k += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u创富通002:
            # 动态数据函数
            sheet = dynamic_save(wb, i_c2, field, field[u第三方代理], 7)

            i_c2 += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u星译付信息科技南通有限公司:
            # 动态数据函数
            sheet = dynamic_save(wb, i_xy, field, field[u第三方代理], 8)

            i_xy += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u云付泰:
            # 动态数据函数
            sheet = dynamic_save(wb, i_yft, field, field[u第三方代理], 9)

            i_yft += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == u莘丽支付:
            # 动态数据函数
            sheet = dynamic_save(wb, i_slzf, field, field[u第三方代理], 10)

            i_slzf += 1

            # 静态数据函数
            static_save(sheet)

        elif field[u第三方代理] == ‘‘:
            # 动态数据函数
            sheet = dynamic_save(wb, i_wcl, field, u待处理, 11)

            i_wcl += 1

            # 静态数据函数
            static_save(sheet)

    wb.save(filename=dest_filename)

 

以上是关于Excel相关操作| openpyxl | Python的主要内容,如果未能解决你的问题,请参考以下文章

python+openpyxl的excel的相关读写

创建workbook及相关操作

python操作excel----openpyxl模块

python-openpyxl操作excel

利用openpyxl模块来操作Excel

python通过openpyxl操作excel