specifiable column hiearachy list
This commit is contained in:
parent
0c180a7f42
commit
79975256a6
|
@ -4,14 +4,17 @@ parser = argparse.ArgumentParser(description='Process some intzzz')
|
|||
parser.add_argument('--in', '-i', dest='file_in', required=True)
|
||||
parser.add_argument('--out', '-o')
|
||||
parser.add_argument('--range', '-r', dest='cell_range')
|
||||
parser.add_argument('column_groups', nargs='+')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
from spreadsheet import get_names_list
|
||||
|
||||
names = get_names_list(args.file_in, args.cell_range)
|
||||
names = get_names_list(args.file_in, args.cell_range, args.column_groups)
|
||||
print(names)
|
||||
|
||||
from directory import create_directories
|
||||
|
||||
create_directories(args.out, names)
|
||||
|
||||
#print(args.column_groups)
|
||||
|
|
|
@ -41,7 +41,21 @@ def parse_range(cellrange):
|
|||
|
||||
return (min_row, min_col, max_row, max_col)
|
||||
|
||||
def get_names_list(filename, cellrange):
|
||||
def get_value(row, colrange):
|
||||
cols = colrange.split(":")
|
||||
indices = [custom_index(row, lambda cell: cell.column_letter == col) for col in cols]
|
||||
|
||||
name = " ".join([str(row[index].value) for index in indices])
|
||||
return name
|
||||
|
||||
|
||||
def custom_index(array, compare_function):
|
||||
for i, v in enumerate(array):
|
||||
if compare_function(v):
|
||||
return i
|
||||
|
||||
|
||||
def get_names_list(filename, cellrange, column_groups):
|
||||
wb = load_workbook(filename = filename)
|
||||
names = []
|
||||
|
||||
|
@ -50,8 +64,15 @@ def get_names_list(filename, cellrange):
|
|||
if cellrange:
|
||||
min_row, min_col, max_row, max_col = parse_range(cellrange)
|
||||
|
||||
for row in wb.active.iter_rows(min_row=min_row, min_col=min_col, max_row=max_row, max_col=max_col, values_only=True):
|
||||
name = " ".join([str(cell) for cell in row if cell is not None])
|
||||
names.append(name)
|
||||
for row in wb.active.iter_rows(min_row=min_row, min_col=min_col, max_row=max_row, max_col=max_col):
|
||||
cells = [cell for cell in row if cell is not None]
|
||||
paths = []
|
||||
|
||||
return [name for name in names if name != ""]
|
||||
for colgroup in column_groups:
|
||||
path = get_value(cells, colgroup)
|
||||
paths.append(path)
|
||||
|
||||
if "None" not in paths:
|
||||
names.append("/".join(paths))
|
||||
|
||||
return names
|
||||
|
|
Loading…
Reference in New Issue