openpyxl 学习- iter_rows和iter_cols

iter_cols是openpyxl库中的一个方法,用于按列迭代读取内容。

在openpyxl中,iter_cols和iter_cols方法用于返回一个生成器,该生成器按列遍历给定的行范围。它接受四个参数:min_row,min_col,max_row和max_col,这些参数定义了要迭代的单元格范围。

 

1 语法:

worksheet.iter_rows(min_row=1,          # 最小行
                    max_row=None,       # 最大行
                    min_col=1,          # 最小列
                    max_col=None,       # 最大列
                    values_only=False   # 为True,只得到单元格的值
                    )
worksheet.iter_cols(min_row=1,          # 最小行
                    max_row=None,       # 最大行
                    min_col=1,          # 最小列
                    max_col=None,       # 最大列
                    values_only=False   # 为True,只得到单元格的值
                    )

 

实例:

演示了如何批量设置列的数字格式。

from openpyxl import Workbook
from openpyxl.styles import *

wb = Workbook()
ws = wb.active
# 设置单个单元格的数字格式
numbers_list = [10,0.34345,.0312456,12345679,123456789,'2023/04/05',12.34566,10235,10234.123,100000]

format_list = ['General','0.00%','0%','€#,##0.00','0.00E+00','yyyy-mm-dd','0.00','#,##0','#,##0.00','#,##0_);(#,##0)']
for i in range(1,len(numbers_list)):
    ws[f'A{i}']  = numbers_list[i-1]
    ws[f'A{i}'] .number_format = format_list[i-1]
format_list2 = ['numbers.FORMAT_GENERAL','numbers.FORMAT_PERCENTAGE_00','numbers.FORMAT_PERCENTAGE',
                'numbers.FORMAT_ACCOUNTING','numbers.FORMAT_SCIENTIFIC','numbers.FORMAT_DATE','numbers.FORMAT_NUMBER_00',
                'numbers.FORMAT_ACCOUNTING_#,##0','numbers.FORMAT_TEXT','numbers.FORMAT_NUMBER_00']
for i in range(1,len(numbers_list)):
    ws[f'B{i}']  = numbers_list[i-1]
    ws[f'B{i}'] .number_format = format_list2[i-1]
# 对一整列数字格式进行设置
for cell in ws.iter_cols(min_col=1, max_col=1):
    for c in cell:
        c.number_format = "0%"   
for cell in ws.iter_cols(min_col=2, max_col=2):
    for c in cell:
        c.number_format = numbers.FORMAT_PERCENTAGE_00
wb.save('example.xlsx')

 

 

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对不起,我之前给出的代码中使用了错误的方法。在openpyxl中,Sheet对象没有名为`iter_rows()`的属性。 要在openpyxl中获取特定范围内单元格的值,可以使用`iter_cols()`和`iter_rows()`方法。以下是一个示例代码,展示如何解决这个问题: ```python import openpyxl # 打开Excel文件 workbook = openpyxl.load_workbook('your_file.xlsx') # 选择第一个工作表 sheet = workbook.active # 获取第2列的倒数第一行到倒数第六行的值 column2_values = [cell.value for cell in sheet['B'][-6:-1]] # 获取第3列到第10列的双数列 double_columns = [column for idx, column in enumerate(sheet.iter_cols(min_col=3, max_col=10)) if (idx+3) % 2 == 0] # 遍历每一行,将最小值赋值给第2列的对应位置 for i, row in enumerate(double_columns, start=-5): min_value = min([cell.value for cell in row]) sheet.cell(row=i, column=2).value = min_value # 保存修改后的Excel文件 workbook.save('your_file.xlsx') ``` 在上述代码中,我们使用`sheet['B'][-6:-1]`来获取第2列的倒数第一行到倒数第六行的单元格对象。然后,我们使用`sheet.iter_cols(min_col=3, max_col=10)`来获取第3列到第10列的单元格对象。注意,我们使用了`enumerate()`函数来获取循环索引,以便在计算列号时使用。最后,我们遍历每一行,找到最小值,并将其赋值给第2列对应的单元格。 请确保你已经正确安装了openpyxl库,并根据你的实际情况进行适当的调整。如果你遇到了其他问题,请提供更多上下文或具体的错误消息,以便我能够更好地帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值