For 循环遍历excel 单元格的方法
小弟现在需要对一定行数和列数的excel 表内各个单元格进行操作实现目标:
1: 判断各条目下的单元格中数值是否 符合判定条件 (未完成,思路卡在不同的excel处理对象行数可能会有处于 1-100不定,然后条目1 下 >-15 为True,其余为false,条目2 字符串为True,空值为false,条目345中> 45 为True,其余为false,想利用for 循环来实现,但是苦于没用思路)
2: 符合判定条件 的单元格着绿色背景,不符合的着黄色背景 (这个不太难,看了甲鱼老师的课程,PatternFill 可以实现)
如果是仅处理单行的话,还是比较好操作的,但是多行处理的话(每列下单元格的数值用统一标准)用for 循环来的话小弟就有点无力了
我问了一些人,有说用openpyxl 处理比较好的,也有说用pandas,xlrd,xlwt 的,小弟刚开始学,用的是openpyxl。。
我知道我这种有点伸手党的意思,但是网上查了一些暂时没找到这种操作的方法,所以发帖来问问大神们{:5_111:} 用pandas就行 不同的excel处理对象行数可能会有处于 1-100不定,用openpyxl也可以获取当前行总数的吧,这个不算问题吧
• ② 获取最大行,最大列
# 获得最大列和最大行
print(sheet.max_row)
print(sheet.max_column)
③ 获取每一行,每一列
• sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
• sheet.columns类似,不过里面是每个tuple是每一列的单元格。
# 因为按行,所以返回A1, B1, C1这样的顺序
for row in sheet.rows:
for cell in row:
print(cell.value)
# A1, A2, A3这样的顺序
for column in sheet.columns:
for cell in column:
print(cell.value)
疾风怪盗 发表于 2020-7-28 23:27
不同的excel处理对象行数可能会有处于 1-100不定,用openpyxl也可以获取当前行总数的吧,这个不算问题吧
& ...
感谢大神回复!!!
获取最大行最大列这个不难,但是对于获取之后的操作(比如对所有A列的值以15为标准进行判断,返回True or False,True的话单元格着绿色,false 着黄色)我就有点懵了啊,我第一时间想到的是单个单元格逐一判断,但是行数多了的情况就不现实了。。 试试这个:import pandas as pd
from openpyxlimport load_workbook
from openpyxl.styles import PatternFill
data_test=pd.read_excel('test.xlsx',sheet_name=0)
print(data_test)
a=data_test>15].index.tolist()#取出条目1里面大于15的数据的索引
a=#因为表格数据起始为1,索引起始为0,操作表格起始为1,所以这边需要+2,才能对应
b=#生成全为1的列表,长度和a一样
d=zip(a,b)#组成可迭代,这个就是目标行+列
wb = load_workbook('test.xlsx')
ws = wb.active
orange_fill = PatternFill(fill_type='solid', fgColor="FFBB00")
for r,c in d:
print(r,c)
ws.cell(row=r,column=c).fill=orange_fill
wb.save('test.xlsx')
只写了一个条目1,其他的都是类似的,改成一个函数,再重复调用就可以了 疾风怪盗 发表于 2020-7-29 11:38
试试这个:import pandas as pd
from openpyxlimport load_workbook
from openpyxl.styles import Patt ...
感谢大神耐心解答 爱你么么哒!{:5_101:}
页:
[1]