Форум сайта python.su
Добрый день.
Помогите с участием библиотеки openpyxl перенести диапазоны объединения ячеек из одного файла Excel в другой с небольшим сдвигом по горизонтали.
Данные об объединенных ячейках получил, а вот провести операции над ним не могу, ни + ни -, а т.к. файлы разные по количеству строк соответственно и перенести диапазоны в новый файл не могу.
Офлайн
Приведи входной файл.
Приведи выходной файл, который получается из входного файла после преобразований над ним.
Приведи описание процесса преобразования входного файла в выходной файл.
Офлайн
Входной файл в вложении, не смог понять как несколько прикрепить.
Выходной1: https://disk.yandex.ru/i/utsDMx9aDapuhA
Выходной2: https://disk.yandex.ru/i/6qkvHoE4exgN6Q
for key, value in IndexRow.items():
start_key_slice = int(value[0])
stop_key_slice = int(value[1])
df = imp[start_key_slice:stop_key_slice]
key_df = pd.DataFrame(df)
path_out = output_folder + key + ".xlsx"
page.merged_cell_ranges
Прикреплённый файлы:
Вход.xlsx (72,6 KБ)
Офлайн
ProviПакуешь в архив .zip и присоединяешь.
не смог понять как несколько прикрепить
Офлайн
Да, верно входной файл разделить на 2, или сколько в нем будет документов.
Файл я разделил, сохранил.
Вопрос в ячейками которые объединены.
Логика какая у меня была:
1. вытаскиваю данные об объединенных ячейках,
2. отфильтровываю, только те диапазоны, которые находятся в нужном мне срезе.
3. Минусую от номера ячейки начало диапазона, и получаю ячейки для которых 0 является начало диапазона.
4. Применяю объединение в новом файле.
Но возможно есть более простой способ.
Но я уперся в то, что merged_cell_ranges выдает свой массив, который я могу только распечатать или вывести на экран, но не могу проводить с ним манипуляции.
Офлайн
Сначала нужно входной файл разделить на множество файлов, которые в одном формате сделаны.
Дальше каждый из этих получившихся файлов надо отдельно преобразовать.
Дальше эти разделённые файлы по отдельности как преобразуются? Теперь они становятся входными файлами и вся процедура повторяется уже для них.
Приведи пример входного файла.
Приведи выходной файл, который получается из этого входного файла после преобразований над ним.
Приведи словесное описание процесса преобразования этого входного файла в этот выходной файл.
Provi
Логика какая у меня была:
ProviТы, не поставив точно задачи до всех её деталей, стал её реализовывать в виде кода, думая, что написание кода сразу и побыстрей как-то поможет это правильно закончить, и в итоге ты запутался в том, что вообще не нужно. Это вот то же самое, что, не составив полного плана для строительства дома, начать строить задуманный дом из кирпичей, брёвен, цемента, песка, из всего, что вообще есть, примерно представляя, что нужно получить в итоге. Сначала составляется план весь, а потом уже строится дом в соответствии с этим планом, а не просто так типа “я сейчас строить начну, а там уже у меня после какого-то кирпича всё начнёт получаться”. И ты сейчас как бы спрашиваешь “слушай, у меня тут кирпичи в брёвнах не помещаются что-то, так как они квадратные, а брёвна круглые, подскажи, как их туда затолкать?”. Дом-то построить вполне реально, но только не вот так.
Но я уперся в то, что merged_cell_ranges выдает свой массив
Отредактировано py.user.next (Авг. 30, 2022 20:12:25)
Офлайн
1. Нахожу начало и конец данных которые будут выходным файлом.
2. Создаю, выходной файл.
3. Украшаю выходной файл: рисую клетки, устанавливаю ширину и т.д. Результат во вложении.
Часть “Украшений” это объединение ячеек.
Вопрос в том, что бы объединенные ячейки не каждую прописывать, а перенести массивом из исходного файла.
Логика переноса объединенных ячеек:
1. вытаскиваю данные об объединенных ячейках - merged_cell_ranges
2. отфильтровываю, только те диапазоны, которые находятся в нужном мне срезе (Например через iloc<конца и > начала)
3. Минусую от номера ячейки начало диапазона, и получаю ячейки для которых 0 является начало диапазона. (к данным от результата фильтра минусую начало диапазона)
4. Применяю объединение в новом файле ( через построчной передачи списка в merge_cells)
Прикреплённый файлы:
Данные Вход и 2 выхода.zip (101,4 KБ)
Офлайн
Или вопрос можно переформулировать: как список merged_cell_ranges, привести к обычном списку, над которым можно совершать операции сложения и вычитания.
Офлайн
ProviЯ так понимаю, тебе нужно просто разделить исходный файл на несколько файлов по этим отдельным счетам, которые в исходном файле идут друг за другом, сохранив объединённые ячейки так, как они были объединены в исходном файле.
Вопрос в том, что бы объединенные ячейки не каждую прописывать, а перенести массивом из исходного файла.
Отредактировано py.user.next (Авг. 31, 2022 08:12:16)
Офлайн
Спасибо. Пошел думать.
Офлайн