Excel с пустыми ячеек, когда я копирую и вставляю в другой Excel с PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Excel с пустыми ячеек, когда я копирую и вставляю в другой Excel с Python

Сообщение Anonymous »

У меня есть код, который копирует специфические ячейки из XLSX и вставляют в другой Excel (который был ранее XLS, но теперь сохранялся как XLSX) < /s> с критериями поиска.

Код должен искать первую пустую ячейку в столбце Q и вставить данные в столбце F, начиная с строки 14000 [в Excel I, проходящие данные]. Он всегда вставлен в строке 14000, и в этой ячейке все еще есть данные. br /> < /p>
Это мой код;

он копирует ячейку, первоначально прося в течение месяца и года идентифицировать архив. < /p>
from openpyxl import load_workbook
from openpyxl.styles import PatternFill

def copiar_datos_con_estilos_condicional(mod_path, p_es_path, MM, AA, start_row=14000):
MM = int(MM)
AA = int(AA)
leap_years = {24, 28, 32, 36, 38, 42, 44, 46, 54}

if MM in {1, 3, 5, 7, 8, 10, 12}:
end_row = 41
elif MM in {4, 6, 9, 11}:
end_row = 40
elif MM == 2:
end_row = 39 if AA in leap_years else 38
else:
raise ValueError(f"Mes {MM} no válido.")

mod_wb = load_workbook(mod_path)
mod_ws = mod_wb["P"]

p_es_wb = load_workbook(p_es_path)
p_es_ws = p_es_wb.active

initial_start_row = start_row
while p_es_ws.cell(row=start_row, column=17).value is not None:
start_row += 1

first_empty_value = p_es_ws.cell(row=start_row, column=17).value # Expected to be None

source_start_row = 13
source_start_col = 3
target_start_col = 6

copied_data = []

for i, row in enumerate(range(source_start_row, end_row + 1)):
row_data = []
for j, col in enumerate(range(source_start_col, 15)):
source_cell = mod_ws.cell(row=row, column=col)
target_cell = p_es_ws.cell(row=start_row + i, column=target_start_col + j)

target_cell.value = source_cell.value
row_data.append(source_cell.value)

if source_cell.fill and source_cell.fill.fill_type:
target_cell.fill = PatternFill(
fill_type=source_cell.fill.fill_type,
start_color=source_cell.fill.start_color.rgb,
end_color=source_cell.fill.end_color.rgb
)
copied_data.append(row_data)

p_es_wb.save(p_es_path)

print(f"Data copied from '{mod_path}' to '{p_es_path}'.")
print(f"First empty row detected in P_ES: {start_row}, value in Q: {first_empty_value}")
print(f"Source rows copied: 13 to {end_row}.")
print(f"Data pasted in '{p_es_path}' starting at row {start_row}.")
print("Copied data:")
for row in copied_data:
print(row)
print("-")

if __name__ == "__main__":
MM = input("Enter MM (e.g., '01'): ")
AA = input("Enter AA (e.g., '24'): ")

mod_paths = [
f"Modificados\\Mod_{MM}_{AA}_ES01_A_procesado.xlsx",
f"Modificados\\Mod_{MM}_{AA}_ES05_A_procesado.xlsx",
f"Modificados\\Mod_{MM}_{AA}_ES06_A_procesado.xlsx"
]

p_es_paths = [
"TODOS\\P_ES01.xlsx",
"TODOS\\P_ES05.xlsx",
"TODOS\\P_ES06.xlsx"
]

for mod_path, p_es_path in zip(mod_paths, p_es_paths):
copiar_datos_con_estilos_condicional(mod_path, p_es_path, MM, AA)
< /code>
Я проверил содержание ячейки в строке 14000 & столбца ?? и он не возвращает ни одного, но я вижу данные.

, поэтому я попробовал случайное решение. Я открыл Excel, где данные вставлены, и снова сохранил документ, и после этого я снова закрыл и снова запустил код. Я не хочу сохранять каждый документ, который не работает.

Когда я снова запускаю код в файлах, которые я больше не сохранил, он встроет в строке 14030, а строка 14000 не пустые на этот раз.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ith-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»