Skip to content

Commit 0b1d466

Browse files
tommyoddafeda
authored andcommitted
Add function to test for merged cells in input file
1 parent fba4605 commit 0b1d466

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

src/semeio/fmudesign/_excel2dict.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def excel2dict_design(
3636
"""
3737

3838
# Find sheets
39+
_assert_no_merged_cells(input_filename)
3940
xlsx = openpyxl.load_workbook(input_filename, read_only=True, keep_links=False)
4041
gen_input_sheet = find_sheet(gen_input_sheet, names=xlsx.sheetnames)
4142
design_input_sheet = find_sheet(design_input_sheet, names=xlsx.sheetnames)
@@ -684,3 +685,17 @@ def _raise_if_duplicates(container: Sequence[Hashable]) -> None:
684685
duplicates = {k: v for (k, v) in Counter(container).items() if v > 1}
685686
if duplicates:
686687
raise ValueError(f"Duplicates with counts: {duplicates}")
688+
689+
690+
def _assert_no_merged_cells(input_filename: str) -> None:
691+
"""Raises an exception if any merged cells exist, else returns None."""
692+
693+
workbook = openpyxl.load_workbook(input_filename)
694+
for sheet_name in workbook.sheetnames:
695+
worksheet = workbook[sheet_name]
696+
merged_ranges = list(worksheet.merged_cells.ranges)
697+
if merged_ranges:
698+
raise Exception(
699+
f"Merged cells are not allowed. Found merged cell in {input_filename} at sheet '{sheet_name}'.\n"
700+
f"Found {len(merged_ranges)} merged cell range(s): {merged_ranges}"
701+
)

0 commit comments

Comments
 (0)