#python #openpyxl
Вопрос:
Я получаю данные из 1 файла в другой с помощью openpyxl. 1 столбец содержит числа, отформатированные в виде текста, но я хочу преобразовать полный столбец без заголовка в целое число. Мне удалось сделать это для 1 ячейки, и мне не удается выполнить свой цикл, чтобы преобразовать все ячейки. Я попытался зациклиться на ячейке «A i», чтобы пройти через все ячейки, но функции int() не принимают это.
Ниже приведен код, работающий и получающий все данные и преобразующий только ячейку A2: (Я использую первую часть цикла, так как получаю значения из разных столбцов.)
for i in range(2, 6000):
# Case_ID
cell_range1 = ws1.cell(i,6)
cell_range2 = ws2.cell(i,1)
cell_range2.value = cell_range1.value
ws2['A2'] = int(ws2['A2'].value)
Надеюсь, вы сможете мне помочь 🙂
Ответ №1:
Это должно сработать.
for i in range(2, 6000):
# Case_ID
# value of cell from worksheet 1
ws1_cell_value = ws1.cell(row=i, column=6).value
# convert ws1 value and set ws2 cell value
ws2.cell(row=i, column=1).value = int(ws1_cell_value)
Я сделал тестовый файл, и он работает так, как ожидалось. Полный код ниже:
from openpyxl import Workbook
# make test file
wb1 = Workbook()
ws1 = wb1.active
for x in range(2, 6000):
ws1.cell(row=x, column=6).value = f"{x}"
wb1.save('string_column.xlsx')
# out file
wb2 = Workbook()
ws2 = wb2.active
# ACTUAL ANSWER CODE:
for i in range(2, 6000):
# Case_ID
# value of cell from worksheet 1
ws1_cell_value = ws1.cell(row=i, column=6).value
# convert ws1 value and set ws2 cell value
ws2.cell(row=i, column=1).value = int(ws1_cell_value)
wb2.save('int_column.xlsx')