У меня есть код, который копирует специфические ячейки из 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
Excel с пустыми ячеек, когда я копирую и вставляю в другой Excel с Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Excel с пустыми ячеек, когда я копирую и вставляю в другой Excel с Python
Anonymous » » в форуме Python - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Excel с пустыми ячеек, когда я копирую и вставляю в другой Excel с Python
Anonymous » » в форуме Python - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему Google Chrome не печатает границы таблиц и ячеек, а также цвета фона ячеек?
Anonymous » » в форуме Html - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-