Подтвердить что ты не робот

Openpyxl - читать только один столбец из файла excel в python?

Я хочу вытащить только столбец 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)
4b9b3361

Ответ 1

Это альтернатива предыдущим ответам, если вы прочитали один или несколько столбцов, используя 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... 

Я надеюсь, что это будет полезно.

Ответ 2

Использование openpyxl

from openpyxl import load_workbook
# The source xlsx file is named as source.xlsx
wb=load_workbook("source.xlsx")

ws = wb.active
first_column = ws['A']

# Print the contents
for x in xrange(len(first_column)): 
    print(first_column[x].value) 

Ответ 3

Я бы предложил использовать библиотеку 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

Используйте ws.get_squared_range() для управления точно диапазоном ячеек, таких как один столбец, который возвращается.

Ответ 5

Вот простая функция:

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

Используя библиотеку 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

Используя отличный ответ 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')

Ответ 8

На мой взгляд, гораздо проще

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)