计算Excel单元格值并将同一行中的结果一列打印到右侧

2024-04-26 01:08:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图弄清楚如何在Excel中读取列中的数据,并在Excel工作表(而不是Python控制台)中将结果打印到右边的一列。下面是我正在测试的代码。它似乎可以工作,但它只是在控制台中显示结果,我真的想将结果写入Excel中的相邻单元格(B列)。你知道吗

import openpyxl
wb = openpyxl.load_workbook('C:\\Users\\Excel\\Desktop\\Book1.xlsx')
ws = wb.get_sheet_by_name('Sheet1')
for row in ws.iter_rows('A{}:A{}'.format(ws.min_row,ws.max_row)):
    for cell in row:
        if isinstance(cell.value, str):
            print('string')
        elif isinstance(cell.value, int):
            print('integer')
        elif isinstance(cell.value, float):
            print('float')

Tags: 数据inforwsvaluecellfloatexcel
2条回答

很简单:

如果修复了要写入B列的问题:

for rowno,row in enumerate(ws.iter_rows('A{}:A{}'.format(ws.min_row,ws.max_row)),start=1):
    for cell in row:
        if isinstance(cell.value, str):
            print('string')
            ws.cell(row=rowno,column=2).value = str("string")
        elif isinstance(cell.value, int):
            print('integer')
            ws.cell(row=rowno,column=2).value = str("integer")
        elif isinstance(cell.value, float):
            print('float')
            ws.cell(row=rowno,column=2).value = str("float")
wb.save('C:\\Users\\Excel\\Desktop\\Book1.xlsx')

更一般的答案:

from openpyxl.utils import get_column_letter
from openpyxl.utils import coordinate_from_string, column_index_from_string

for rowno,row in enumerate(ws.iter_rows('A{}:A{}'.format(ws.min_row,ws.max_row)),start=1):
    for cell in row:
        if isinstance(cell.value, str):
            xy = coordinate_from_string(cell.coordinate)
            colno = column_index_from_string[0]
            ws.cell(row=rowno, column=colno+1).value = str("string")
        elif isinstance(cell.value, int):
            xy = coordinate_from_string(cell.coordinate)
            colno = column_index_from_string[0]
            ws.cell(row=rowno, column=colno+1).value = str("string")
        elif isinstance(cell.value, float):
            xy = coordinate_from_string(cell.coordinate)
            colno = column_index_from_string[0]
            ws.cell(row=rowno, column=colno+1).value = str("string")
wb.save('C:\\Users\\Excel\\Desktop\\Book1.xlsx')

使用cell.offset(column=1)获取下一个单元格。你知道吗

相关问题 更多 >