diff --git a/xlsx_dir_map/__main__.py b/xlsx_dir_map/__main__.py index 3b3498a..871bf6d 100644 --- a/xlsx_dir_map/__main__.py +++ b/xlsx_dir_map/__main__.py @@ -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) diff --git a/xlsx_dir_map/spreadsheet.py b/xlsx_dir_map/spreadsheet.py index 310e9f0..c934795 100644 --- a/xlsx_dir_map/spreadsheet.py +++ b/xlsx_dir_map/spreadsheet.py @@ -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 = [] + + for colgroup in column_groups: + path = get_value(cells, colgroup) + paths.append(path) - return [name for name in names if name != ""] + if "None" not in paths: + names.append("/".join(paths)) + + return names