【问题标题】:How to loop through a given column of all Excel rows?如何遍历所有 Excel 行的给定列?
【发布时间】:2021-11-07 20:30:19
【问题描述】:

我正在运行一个 python 代码来分隔 Excel 中的文本,例如,我们在一个单元格中(尺寸:15 毫米)代码将采用符号“:”之前的单词“尺寸”并将其添加为一列名称然后取“15mm”并将其添加为值。

问题是代码仅在我指定单元格(例如 A4)时才有效。您如何请求遍历 A 列的所有单元格?

import openpyxl

book = openpyxl.load_workbook('C:/Users/zalka/Desktop/Python project/new13.xlsx')

sheet = book.active

U4 = sheet["A4"]
Column_base = 3
i = 0
a = sheet.cell(row=3, column=1)
tech_details = U4.value.splitlines()
print(U4.value.splitlines())

for tech_detail in tech_details:
    print(tech_detail)
    print(tech_detail.index(":"))
    s = tech_detail.index(":")
    name = tech_detail[:s]
    print(name)
    value = tech_detail[s+1:]
    print(value)
    sheet.cell(row=3, column=i+Column_base).value = name
    sheet.cell(row=4, column=i+Column_base).value = value
    i=i+1

book.save('C:/Users/zalka/Desktop/Python project/write2cell2.xlsx')

【问题讨论】:

  • 下一个单元格的数据在哪里,例如A5 去?
  • 你看过 openpyxl 文档吗?

标签: python excel openpyxl


【解决方案1】:

想象所有要拆分的文本都在 A 列中。您可以尝试这样做吗:

import openpyxl

book = openpyxl.load_workbook('data.xlsx')
sheet = book['A']

for j,i in enumerate(sheet['A']):
    try:
        name = str(i.value).split(":")
        value = str(i.value).split(":")[1]  
        sheet.cell(row=j+1, column=2).value = name
        sheet.cell(row=j+1, column=3).value = value
    except:
        pass        

【讨论】:

    【解决方案2】:
    1. 导入模块:
    import openpyxl
    
    1. 加载 excel 及其路径:
    workbk = openpyxl.load_workbook("Book1.xlsx")
      
    sh = workbk.active
    
    1. 遍历excel并显示数据:
    for row in sh.iter_rows(min_row=1, min_col=1, max_row=12, max_col=3):
        for cell in row:
            print(cell.value, end=" ")
    

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 2018-07-23
      • 2011-02-28
      • 2022-01-18
      • 2013-05-04
      相关资源
      最近更新 更多