Преобразуйте столбец чисел в целое число openpyxl

#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')