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)
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.
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)
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)
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)
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
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)
Verwenden Sie ws.get_squared_range()
, um den zurückgegebenen Zellenbereich (z. B. eine einzelne Spalte) genau zu steuern.
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')