如何使用Python从Excel文件中读取一列



我想在excel中读取一列中的数据,这是我的代码:

import xlrd
file_location = "location/file_name.xlsx"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_name('sheet')
x = []
for cell in sheet.col[9]:
    if isinstance(cell, float):
        x.append(cell)
print(x)

这是错误的,因为表中没有名为col[col.num]的方法,但我只想从第8列(H列)提取数据,我能做什么?

如果你没有使用xlrd锁定,我可能会使用panda,这在处理来自任何地方的数据时都很好:

import pandas as pd
df = pd.ExcelFile('location/test.xlsx').parse('Sheet1') #you could add index_col=0 if there's an index
x=[]
x.append(df['name_of_col'])

然后,您可以使用pandas df.to_excel() 将新提取的列写入一个新的excel文件

您可以获得第8列的值,如下所示:

for rownum in range(sheet.nrows):
    x.append(sheet.cell(rownum, 7))

到目前为止,使用xlrd获取列中所有值的最简单方法是col_values()工作表方法:

x = []
for value in sheet.col_values(8):
    if isinstance(value, float):
        x.append(value)

(注意,如果您想要列H,您应该使用7,因为索引从0开始。)

顺便说一句,可以使用col()获取列中的单元格对象

x = []
for cell in sheet.col(8):
    if isinstance(cell.value, float):
        x.append(cell.value)

找到这些东西的最好地方是官方教程(它是xlrdxlwtxlutils的一个不错的参考)。当然,您也可以查看文档和源代码。

我建议这样做:

import openpyxl
fname = 'file.xlsx'
wb = openpyxl.load_workbook(fname)
sheet = wb.get_sheet_by_name('sheet-name')
for rowOfCellObjects in sheet['C5':'C7']:
  for cellObj in rowOfCellObjects:
    print(cellObj.coordinate, cellObj.value)

结果:
C5 70.82
C6 84.82
C7 96.82

注:fname表示excel文件,get_sheet_by_name("表名")指所需的表,在表中,列的范围为'C5':'C7']

查看链接了解更多详细信息。代码段也取自此处。

XLRD很好,但对于这种情况,您可能会发现Pandas很好,因为它有通过使用运算符"[]"来选择列的例程

上下文的完整工作代码是

import pandas as pd
file_location = "file_name.xlsx"
sheet = pd.read_excel(file_location)
print(sheet['Sl'])

输出1-对于列"Sl"

0    1
1    2
2    3
Name: Sl, dtype: int64

输出2-对于列"名称"

print(sheet['Name'])
0      John
1      Mark
2    Albert
Name: Name, dtype: object

参考:file_name.xlsx数据

Sl  Name
1   John
2   Mark
3   Albert

最新更新