webentwicklung-frage-antwort-db.com.de

openpyxl - Nur eine Spalte aus einer Excel-Datei in Python lesen?

Ich möchte nur Spalte A aus meiner Tabelle ziehen. Ich habe den folgenden Code, aber er zieht aus allen Spalten.

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)
14
lelarider

dies ist eine Alternative zu den vorherigen Antworten, falls Sie eine oder mehrere Spalten mit openpyxl lesen möchten 

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... 

Ich hoffe, dass dies nützlich ist.

10
ZLNK

Openpyxl verwenden

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) 
5
Harilal Remesan

Ich würde vorschlagen, die Pandas-Bibliothek zu verwenden. 

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

Wenn Sie sich in Pandas nicht wohl fühlen oder aus irgendeinem Grund mit openpyxl arbeiten müssen, lautet der Fehler in Ihrem Code, dass Sie nicht nur die erste Spalte auswählen. Sie rufen explizit für jede Zelle in jeder Zeile auf. Wenn Sie nur die erste Spalte wünschen, erhalten Sie nur die erste Spalte in jeder Zeile.

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

Meiner Meinung nach ist das viel einfacher

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)
1
Lorenzo

Durch die Verwendung der openpyxl-Bibliothek und des Python-Listenverständniskonzepts:

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)])

Es ist ziemlich erstaunlich und einen Versuch wert

1
Serhii Aksiutin

Hier ist eine einfache Funktion:

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)
1
Compadre

Verwenden Sie ws.get_squared_range(), um den zurückgegebenen Zellenbereich (z. B. eine einzelne Spalte) genau zu steuern.

1
Charlie Clark

Mit der hervorragenden Antwort von ZLNK habe ich diese Funktion entwickelt, die Listenverständnis verwendet, um in einer Zeile dasselbe Ergebnis zu erzielen: 

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]

Sie können es dann aufrufen, indem Sie ein Arbeitsblatt, eine Zeile, an der Sie beginnen möchten, und den ersten Buchstaben einer beliebigen Spalte übergeben, die Sie zurückgeben möchten:

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

Um Spalte A und Spalte B zurückzugeben, ändert sich der Aufruf wie folgt:

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