我想在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列)中提取数据,我该怎么办?
您可以像这样获取第8列的值:
for rownum in range(sheet.nrows):
x.append(sheet.cell(rownum, 7))
如果您没有使用xlrd锁定,我可能会使用pandas,这在处理来自任何地方的数据时非常好:
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文件
到目前为止,使用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)
找到这个东西的最佳地方是官方的tutorial(这是xlrd
,xlwt
和xlutils
的一个不错的参考)。您当然也可以查看documentation和源代码。
我建议这样做:
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('sheet-name')指的是所需的工作表,并且在列中提到['C5':'C7']范围。
查看link了解更多详情。代码段也取自此处。
XLRD很好,但是对于这种情况你可能会发现Pandas很好,因为它有通过使用运算符'[]'来选择列的例程
您的上下文的完整工作代码将是
import pandas as pd
file_location = "file_name.xlsx"
sheet = pd.read_excel(file_location)
print(x['column name of col 9'])