用Python语言实现将两个Excel文件完成类似SQL中内连接查询的合并操作

      在做文本分析过程中,需要实现将两个Excel文件中的数据完成合并操作,数据合并的要求与SQL中的内连接查询的功能一致。具体要求见如下图所示:

1.表一中的数据如下所示:


2.表二中的数据如下所示:


3.最后需要合并成的样例为:


      完成此问题的代码应分为三个模块:1.EXCEL文件的读取模块;2.EXCEL文件内容的合并模块;3.EXCEL文件的写入模块。具体代码如下所示:

import xlrd
import xlwt
import openpyxl
import string
import sys

Pos_Table1 = sys.argv[1]
Pos_Table2 = sys.argv[2]
Pos_Table_End=sys.argv[2]
Count1=int(sys.argv[3])-1
Count2=int(sys.argv[4])-1

def read07Excel(path):
    wb = openpyxl.load_workbook(path)
    sheet = wb.get_sheet_by_name('Sheet1')

    sheet_value=[]
    for row in sheet.rows:
        tmp=[]
        for cell in range(len(row)):
            tmp.append(row[cell].value)
        sheet_value.append(tmp)
    return sheet_value

def write07Excel(path,value):
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = 'Sheet1'
    for i in range(0, len(value)):
        for j in range(0, len(value[i])):
            sheet.cell(row=i+1, column=j+1, value=str(value[i][j]))
    wb.save(path)
    print("写入数据成功!")

Table1_txt=read07Excel(Pos_Table1)
Table2_txt=read07Excel(Pos_Table2)

total=[]
for i in range(len(Table1_txt)):
    tmp=[]
    for j in range(len(Table2_txt)):
    	if str(Table1_txt[i][Count1])==str(Table2_txt[j][Count2]):
            for x in range(len(Table1_txt[i])):
                if x==Count1:
                    continue
                Table2_txt[j].append(Table1_txt[i][x])
            tmp=Table2_txt[j]
            total.append(tmp)
            break
write07Excel(Pos_Table_End,total)

我们来完成一个实例运行:

将1.xlsx文件如下图所示:


和2.xlsx文件如下图所示:


进行类似于SQL内连接的合并。

我们输入如下所示的命令:


此命令中包含4个参数:第一个为文件1的相对路径;第二个为文件2的相对路径;第3个为文件1中与文件2中的公共列的索引,例如本例中根据1.xlsx文件图中的标注取值为2;第4个为文件2中与文件1中的公共列的索引,例如本例中根据2.xlsx文件图中的标注取值为3

程序运行完成后,我们可以在文件2.xlsx中看到如下结果:


本程序的源代码下载地址为:https://github.com/XiaoYaoNet/Combine

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值