Я использую Ячейки Aspose для Java .
Я работаю с электронной таблицей Excel.Я хотел бы перебрать каждую ячейку, и если две ячейки касаются одного идентичного стиля и имеют общий идентификатор, объедините их в отдельный диапазон для последующей обработки.По мере итерации большего числа ячеек существующие диапазоны могут увеличиваться.
Диапазон состоит из свойств startRow
, endRow
, startCol
и endCol
.Если все четыре свойства равны, он представляет одну ячейку.
Например, я бы ожидал, что {(1,1),(1,1)}
и {(2,2),(1,1)}
объединятся в {(1,2),(1,1)}
.Между тем {(1,1),(1,1)}
и {(2,2),(2,2)}
не будут объединяться, потому что они диагональные, а не смежные.
Я думаю, я мог бы использовать для этого вариацию дерева интервалов , но я быадаптировать его для 2D-интервалов.Однако в этом случае мне все равно, если два диапазона перекрываются;если два диапазона перекрываются, это перекрывающиеся прямоугольники, и в этом случае их объединение ничего не изменит для минимизации количества общих диапазонов.
Вот грубое представление о входе / выходе, которое я ожидаю .
Мое лучшее предположение заключается в том, что мне придется выполнять итерации из каждой ячейки и сравнивать идентификаторы стилей.Перебираясь от текущей ячейки вверх и вниз, проверяйте остальные ячейки в этом диапазоне на тот же идентификатор и создавайте новые диапазоны на основе этого.
Мысли?