我想在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)
找到这些东西的最好地方是官方教程(它是xlrd
、xlwt
和xlutils
的一个不错的参考)。当然,您也可以查看文档和源代码。
我建议这样做:
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