python openpyxl rows 气炸了!Python openpyxl rows取一行像切菜,取一列却像上刑?
2026/8/28 18:25:12 网站建设 项目流程

前言:

(话外:如何取某一列这个,真的是气死我气死我气死我拉!)

依然记录学习使用,属于昨天内容的进阶版!

要是想进行基础操作, 像是那种创建excel的, 还有创建sheet的操作, 那就能够去点击下面那个链接哟~

基础操作其一, 创建.xlsx文件, 豆包的戳苏的博客, CSDN博客。

取某一行:

首先,我们快速创建一个表格:

from openpyxl import Workbook from openpyxl import load_workbook wb = Workbook() # pay attention to the first letter sheet_2 = wb.create_sheet('sheet_2') for i in range(1, 20): for j in range(1, 20): sheet_2.cell(i, j, value=j*i)

数据够多了。

此刻, 我们得晓得, 行以及列是如何组建而成的。接下来插播一段手动录入数据的代码, (此代码与其他内容毫无关联, 仅仅是为了区分行和列的差异而已)。

rows = ( (998, 997, 996), (787, 988, 876), (233, 445, 786) ) for row in rows: sheet.append(row)

依据自身输入数据来创建excel表格能够明白, 每一行都是一个元组, 每一列并非元组(它属于一个)。

这个认知非常重要!!

因此, 于获取全部行之际, 颇为简易, 我们仅需对表格展开一次遍历, 从而获取单个元组, 接着对该元组再度展开遍历, 进而获取单个对象, 并且获取其值。

这个非常简单,两次迭代即可搞定,就不放代码la。

可以选择直接print,也可以创建列表,放在列表里。

要是想让列表呈现出好看的样子, 那就去创建两个列表, 让它们组合形成一个二位列表……(这就有点类似拉嘿嘿串台那种情况了)。

我要输出某一行的值:

for i in sheet_2[5]: print(i.value, end='\t') print() ''' 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 '''

注意:这里,我输入的是5,他输出的是第五行。

和中index的取值不一样, 此处在这输入0, 会出现报错情况。原因在于行列皆是从1起始的。

取某一列:

行,是一个元组,输出很方便,那么列怎么办呢?

如果上述代码,会直接报错。

我们可以先尝试输出全部的“列”:

list1 = [] for col1 in sheet_2.columns: list_1 = [] for col_1 in col1: list_1.append(col_1.value) list1.append(list_1) print(list1) print(list1[0])

list1是二维列表,是二维列表中的一维列表。

如果想要输出某一行,可以直接利用index。

然而这般情形是极其繁难的, 一旦数据量繁多, 那么其运作速率就是很迟缓的, 可否仅是纯粹地形成输出单列呢。

能。

sheet_2_col = tuple(sheet_2.columns) for i in range(0, 4): for j in sheet_2_col[i]: print(j.coordinate, j.value, end="\t") print()

以上我选取的是从第1列到第4列, 也就是: A列至D列, 输出的是它们的标号加上值。然而为啥我写上了0呢? 刚刚不是才说, 不存在0的情况吗?

因为我把“列”变成了元组。

元组可以有0。

事实上, 这个办法于应对多数据之际存有弊端, 我们瞧瞧下面的方法。

for i in sheet_2.rows: for j in i: if 'A' in j.coordinate: print(j.coordinate, j.value, end='\t') print()

这里只输出了A列。

依然需要遍历一遍才行。

应用excel里的函数:

for i in range(1, 20): sheet_2[f"T{i}"] = f'=AVERAGE(A{i}:S{i})' sheet_2[f"U{i}"] = f'=SUM(A{i}:S{i})' sheet_2['V1'] = 'AVERAGE' sheet_2['W1'] = 'Sum' for i in range(2, 20): sheet_2[f"V{i}"] = f'=AVERAGE(B{i}:S{i})' sheet_2[f"W{i}"] = f'=SUM(B{i}:S{i})'

要留意上面存在着诸多特别细微细节之处, {i}用于实现占位功能, f指的是在excel当中所出现的那个f, 需加以注意的是, 引号被放置于等号的前方位置!

如果列表头要添加文字

就是很简便的那种, 直接去更改单元格当中的内容, 并且要注留意公式能够容纳数据的范畴才行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询