Python 在openpyxl中查看行值

Python 在openpyxl中查看行值,python,excel,csv,openpyxl,Python,Excel,Csv,Openpyxl,在python中的csv模块中,有一个名为csv.reader的函数,它允许您迭代一行,返回一个reader对象,并可以保存在类似列表的容器中 因此,当列表分配给变量并打印时,即: csv_rows = list(csv.reader(csvfile, delimiter=',', quotechar='|')) print (csv_rows) > > > [['First Name', 'Last Name', 'Zodicac', 'Date of birth', 'Se

在python中的csv模块中,有一个名为
csv.reader
的函数,它允许您迭代一行,返回一个reader对象,并可以保存在类似列表的容器中

因此,当列表分配给变量并打印时,即:

csv_rows = list(csv.reader(csvfile, delimiter=',', quotechar='|'))
print (csv_rows)
>
>
>
[['First Name', 'Last Name', 'Zodicac', 'Date of birth', 'Sex'] # I gave an example of the function outputting a header row
到目前为止,我在openpyxl中没有看到类似的函数。我可能弄错了,所以我想知道你们中是否有人能帮我

更新

@alecxe,您的解决方案非常有效(除了将我的出生日期转换为日期时间格式而不是常规字符串)

因为我是一个初学者,我想知道如果我使用for循环而不是列表理解,这将如何工作

所以我用了这个:

def iter_rows(ws):
result=[]
for row in ws.iter_rows()
    for cell in row:
        result.append(cell.value)
yield result
它几乎给了我完全相同的输出,相反,它给了我这个: 正如你所知道的,它实际上给了我一个巨大的列表,而不是你给我的结果中的嵌套列表

>>>print(list(iter_rows(ws)))

[['First Nam', 'Last Name', 'Zodicac', 'Date of birth', 'Sex', 'David', 'Yao', 'Snake', datetime.datetime(1989, 9, 4, 0, 0), 'M']]
可能有类似的感觉:

返回基于range_字符串参数的平方范围,使用 发电机。如果未传递任何范围,则将迭代 工作表

演示:


我用这种方法使它工作:

all_rows = []

for row in worksheet:
    current_row = []
    for cell in row:
        current_row.append(cell.value)
    all_rows.append(current_row)
基本上,我为所有数据创建了一个列表。 然后,我遍历了工作表中的每一行。 一行中的每个
单元格.value
被添加到短期列表(当前行)。
一旦行中的所有
单元格.值添加到短期列表中,短期列表将添加到长期列表中。

被您的出现吓到了。yield
列表不会给出与您的相同的结果solution@bLunt谢谢你的客气话和一个有趣的问题。我只想澄清以下几点。你想要的结果是什么?你现在得到的结果是什么?谢谢你的回复,我会继续更新/编辑我在上面写的原始帖子。好的,OP已经为你的评论更新了。我要去睡觉了,明天某个时候我会查看你的回复。再次感谢!如果某物与列表一起工作,那么它也将与列表一起工作。两者的区别在于列表理解为工作表中的每一行创建一个列表。如果要在解决方案中执行此操作,则需要为每行创建一个新列表,并将其附加到结果中。然而,没有理由不使用列表理解来做这件事。添加口头解释通常是有帮助的。请编辑您的答案,以便对代码工作的原因进行解释。这将有助于OP和任何未来的访问者,以便他们能够判断此解决方案是否与他们相关。包括任何预期产出、可能出现的问题以及可能出现的问题。
from openpyxl import load_workbook
import os

os.chdir('C:/Users/Eswar_pc/Downloads')
wb = load_workbook('Synonyms.xlsx')
sheet = wb['Sheet1']
corpus = []
e = sheet.iter_rows()
cells = list(e)
for i in cells:
    corpus.append(i[0].value)
print(corpus[1:30])
def iter_rows(ws):
    for row in ws.iter_rows():
        yield [cell.value for cell in row]
>>> pprint(list(iter_rows(ws)))
[[1.0, 1.0, 1.0, None, None],
 [2.0, 2.0, 2.0, None, None],
 [3.0, 3.0, 3.0, None, None]]
all_rows = []

for row in worksheet:
    current_row = []
    for cell in row:
        current_row.append(cell.value)
    all_rows.append(current_row)
from openpyxl import load_workbook
import os

os.chdir('C:/Users/Eswar_pc/Downloads')
wb = load_workbook('Synonyms.xlsx')
sheet = wb['Sheet1']
corpus = []
e = sheet.iter_rows()
cells = list(e)
for i in cells:
    corpus.append(i[0].value)
print(corpus[1:30])