openpyxl - 只读取python中excel文件中的一列?

时间:2016-01-12 21:26:20

标签: python excel openpyxl

我想从电子表格中仅提取A列。我有以下代码,但它来自所有列。

from openpyxl import Workbook, load_workbook

wb=load_workbook("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", use_iterators=True)
sheet_ranges=wb['PrivAlert Terms']

for row in sheet_ranges.iter_rows(row_offset=1): 
    for cell in row:
        print(cell.value)

8 个答案:

答案 0 :(得分:10)

如果您使用openpyxl

读取一个或多个列,这是以前答案的替代方法
import openpyxl

wb = openpyxl.load_workbook('origin.xlsx')
first_sheet = wb.get_sheet_names()[0]
worksheet = wb.get_sheet_by_name(first_sheet)

#here you iterate over the rows in the specific column
for row in range(2,worksheet.max_row+1):  
    for column in "ADEF":  #Here you can add or reduce the columns
        cell_name = "{}{}".format(column, row)
        worksheet[cell_name].value # the value of the specific cell
        ... your tasks... 

我希望这很有用。

答案 1 :(得分:7)

使用openpyxl

link = somelink.pdf
puts link.to_s.include?(".pdf")

答案 2 :(得分:2)

我认为要简单得多

from openpyxl import Workbook, load_workbook
wb = load_workbook("your excel file")
source = wb["name of the sheet"]
for cell in source['A']:
    print(cell.value)

答案 3 :(得分:1)

我建议使用pandas库。

import pandas as pd
dataFrame = pd.read_excel("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", sheetname = "PrivAlert Terms", parse_cols = 0)

如果您对pandas感到不舒服,或者出于任何原因需要使用openpyxl,则代码中的错误是您不是只选择第一列。您显式调用每行中的每个单元格。如果您只想要第一列,那么只获取每一行的第一列。

for row in sheet_ranges.iter_rows(row_offset=1): 
    print(row[0].value)

答案 4 :(得分:1)

使用ws.get_squared_range()精确控制返回的单元格范围,例如单个列。

答案 5 :(得分:1)

这是一个简单的功能:

import openpyxl

def return_column_from_excel(file_name, sheet_name, column_num, first_data_row=1):
    wb = openpyxl.load_workbook(filename=file_name)
    ws = wb.get_sheet_by_name(sheet_name)
    min_col, min_row, max_col, max_row = (column_num, first_data_row, column_num, ws.max_row)
    return ws.get_squared_range(min_col, min_row, max_col, max_row)

答案 6 :(得分:1)

使用openpyxl库和Python的列表推导概念:

import openpyxl

book = openpyxl.load_workbook('testfile.xlsx')
user_data = book.get_sheet_by_name(str(sheet_name))
print([str(user_data[x][0].value) for x in range(1,user_data.max_row)])

这是非常了不起的方法,值得一试

答案 7 :(得分:0)

使用ZLNK的出色响应,我创建了这个使用列表理解的功能,在一行中获得相同的结果:

def read_column(ws, begin, columns):
  return [ws["{}{}".format(column, row)].value for row in range(begin, len(ws.rows) + 1) for column in columns]

然后,您可以通过传递工作表,要开始的行以及要返回的任何列的第一个字母来调用它:

column_a_values = read_column(worksheet, 2, 'A')

要返回A列和B列,呼叫将更改为:

column_ab_values = read_column(worksheet, 2, 'AB')