
| Current Path : /proc/thread-self/root/home/ift/52_procpy/dataninja/test/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //proc/thread-self/root/home/ift/52_procpy/dataninja/test/magicmerge.py |
# coding: utf8
import os,re,sys
import iftlib
import procpy.magicmerge
import pdb
#**************************************************************************
class Magicmerge (object):
def __init__ (self,*pars):
self.__class__.__dict__[pars[0]](self,pars[1:])
#**************************************************************************
def test01a (self,*pars):
mm = procpy.magicmerge.Magicmerge()
# list1 = [([1,"b"],[1,"b"]),([2,"b"],[2,"b"]),([4,"b"],[7,"b"])]
# list2 = [([1,"a"],[6,"a"]),([2,"a"],[5,"a"]),([3,"a"],[5,"a"]),([4,"b"],[7,"b"])]
# list3 = [([4,"a"],[4,"a"]),([3,"a"],[5,"a"]),([5,"a"],[4,"a"]),([1,"a"],[4,"a"]) ]
# mm.sync_lists2(list3, 0, list1,[0],list2,[0])
list1 = [(["xys"],[1]),(["qwe"],[2]),(["999"],[])]
list2 = [(["xys"],[6]),(["qwe"],[5]),(["999"],[5]),(["%"],[7])]
list3 = [(["%"],[4]),(["qwe"],[5]),(["po"],[4]),(["xys"],[4]) ]
# list1 = [(["a"],[1]),(["b"],[2]),(["d"],[])]
# list2 = [(["a"],[6]),(["b"],[5]),(["c"],[5]),(["d"],[7]),(["e"],[7])]
# list3 = [(["e"],[7]),(["a"],[5]),(["f"],[7]),(["b"],[6]),(["d"],[5]) ]
mm.sync_lists2(list3, 0, list1,[0],list2,[0])
# result = mm.merge_objects(list3,list1,list2)
print(list1)
print(list2)
print(list3)
# print result
#**************************************************************************
def test01b (self,*pars):
lista=[[None,None],[None,None]]
listb=[[None,None],["a",None]]
dicta = {"a":None,"b":None}
dictb = {"a":None,"b":3}
mm = procpy.magicmerge.Magicmerge()
# print mm.is_element_None(lista)
# print mm.is_element_None(listb)
print(mm.is_element_None(dicta))
print(mm.is_element_None(dictb))
#**************************************************************************
def test01 (self,*pars):
mm = procpy.magicmerge.Magicmerge()
list1 = [(1,1),(2,2),(3,7),(4,5),(5,6),(6,6)]
list2 = [(1,6),(2,5),(3,5),(4,2),(5,3),(6,1),(7,1)]
# list1 = [([1,"b"],[1,"b"]),([2,"b"],[2,"b"]),([3,"b"],[7,"b"]),([4,"b"],[5,"b"]),([5,"b"],[6,"a"]),([6,"b"],[6,"a"])]
# list2 = [([1,"a"],[6,"a"]),([2,"a"],[5,"a"]),([3,"a"],[5,"a"]),([4,"a"],[2,"a"]),([5,"a"],[3,"a"]),([6,"a"],[1,"a"]),([7,"a"],[1,"a"])]
mm.sync_lists(list2,[0],list1,[0])
print(list1)
print(list2)
#**************************************************************************
def test02 (self,*pars):
import glob, openpyxl
mm = procpy.magicmerge.Magicmerge()
xfile = "test1.xlsx"
print(xfile)
list1 = list(openpyxl.load_workbook(xfile).get_sheet_by_name("xls").values)
print(list1)
#**************************************************************************
def test03 (self, *pars):
wb1 = sys.argv[2]
wb2 = sys.argv[3]
wb_orig = sys.argv[4]
import openpyxl
from openpyxl.styles import Font, PatternFill
mm = procpy.magicmerge.Magicmerge()
# get excel data ######################################
count=0
for file in [wb1, wb2, wb_orig]:
wb = openpyxl.load_workbook(file)
sheet1 = []
row_format = []
col_format = []
if len(sys.argv)>5:
sheetname = sys.argv[5]
else:
sheetname = wb.get_sheet_names()[0]
sheet = wb.get_sheet_by_name(sheetname)
for row in range(1,sheet.max_row+1):
row_tuple = []
row1 = sheet.row_dimensions[row]
for col in range(1,sheet.max_column+1):
cell_list = [sheet.cell(row=row, column = col).value]
# create font object
font = Font(b=sheet.cell(row=row, column = col).font.b,
i=sheet.cell(row=row, column = col).font.i,
color = sheet.cell(row=row, column = col).font.color)
cell_list.append(font)
fill = PatternFill(start_color = sheet.cell(row=row, column = col).fill.fgColor,
end_color = sheet.cell(row=row, column = col).fill.fgColor,
fill_type = sheet.cell(row=row, column = col).fill.fill_type)
cell_list.append(fill)
row_tuple.append(cell_list)
sheet1.append(row_tuple)
exec("data"+str(count)+" = sheet1 ")
count += 1
print("size data0: "+str((len(data0),len(data0[0]))))
print("size data1: "+str((len(data1),len(data1[0]))))
print("size data2: "+str((len(data2),len(data2[0]))))
# print "data0: "+str(data0)
# print "data1: "+str(data1)
# print "data2: "+str(data2)
# synchronize lists ###################################
# [ii,jj] = mm.find_col() # not implemented yet - find best columns for sorting
mm.sync_lists2(data0, 0, data1, [0], data2, [0])
print("size data0: "+str((len(data0),len(data0[0]))))
print("size data1: "+str((len(data1),len(data1[0]))))
print("size data2: "+str((len(data2),len(data2[0]))))
# transpose the arrays ################################
data0 = [list(i) for i in zip(*data0)]
data1 = [list(i) for i in zip(*data1)]
data2 = [list(i) for i in zip(*data2)]
# synchronize transposed lists ########################
# [ii,jj] = mm.find_col() # not implemented yet - find best columns for sorting
mm.sync_lists2(data0, 0, data1, [0], data2, [0])
print("size data0: "+str((len(data0),len(data0[0]))))
print("size data1: "+str((len(data1),len(data1[0]))))
print("size data2: "+str((len(data2),len(data2[0]))))
# transpose the arrays ################################
data0 = [list(i) for i in zip(*data0)]
data1 = [list(i) for i in zip(*data1)]
data2 = [list(i) for i in zip(*data2)]
# merge (three ways) ##################################
result = mm.merge_objects(data0,data1,data2)
# remove empty rows and cols ##########################
mm.remove_empty_rows(result)
result = [list(i) for i in zip(*result)]
mm.remove_empty_rows(result)
result = [list(i) for i in zip(*result)]
# for row in result:
# print [i[0] for i in row]
# export the result ####################################
wb = openpyxl.Workbook()
ws = wb.active
for i in range(len(result)):
for j in range(len(result[i])):
ws.cell(row=i+1, column=j+1).value = result[i][j][0]
if result[i][j][1]:
ws.cell(row=i+1, column=j+1).font = result[i][j][1]
if result[i][j][2]:
ws.cell(row=i+1, column=j+1).fill = result[i][j][2]
wb.save("test_result.xlsx")
#**************************************************************************
if __name__ == "__main__":
Magicmerge(*tuple(sys.argv[1:]))