您的位置:首页 > 编程语言 > Python开发

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

2018-03-01 18:50 1096 查看
      在做文本分析过程中,需要实现将两个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python Exce 文本分析