Python要約excelから総表へ

1696 ワード


import xlrd
import openpyxl
from openpyxl import load_workbook
from openpyxl import Workbook
source_xls = [("data.xlsx")]
data = []
nw = Workbook()
for i in source_xls:
    # wb = xlrd.open_workbook(i)
    wb = load_workbook(i)
    sheetnames = wb.get_sheet_names()
    print(len(sheetnames))
    for sh in sheetnames:
        new = nw.create_sheet()
        ws = wb[sh]
        new.title = sh
        max_rows = ws.max_row  #     
        max_column = ws.max_column  #     

        for m in range(1, max_rows + 1):
            for n in range(97, 97 + max_column):  # chr(97)='a'
                n = chr(n)  # ASCII  
                i = '%s%d' % (n, m)  #      
                cell1 = ws[i].value  #   data     
                new[i].value = cell1  #    test   

nw.save("test3.xlsx")

# coding:utf-8
import openpyxl

x = 2

#    
w1 = openpyxl.load_workbook('1.xlsx')
w2 = openpyxl.load_workbook('3.xlsx')

#   record xlsx  
w3 = openpyxl.Workbook()
sheet3 = w3.active
sheet3.title = 'record'

#  sheet  
a = w1.sheetnames
b = w2.sheetnames
#    sheet,      
sheet1 = w1.get_sheet_by_name(a[0])
sheet2 = w2.get_sheet_by_name(b[0])
#      
max1 = sheet1.max_row
max2 = sheet2.max_row
#      
m1 = sheet1.max_column
m2 = sheet2.max_column
#  ,              ,       
for i in range(2,max2 + 1):
    for j in range(2,max1 + 1):
        if sheet1.cell(row=j,column=1).value == sheet2.cell(row=i,column=1).value:
            for k in range(1,m1+1):
                sheet3.cell(row=x,column=k).value = sheet1.cell(row=j,column=k).value
            x += 1
#  
w3.save('record.xlsx')