スプレッドシートから列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)
これは、openpyxlを使用して1つ以上の列を読む場合の以前の回答の代替です。
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...
これが役に立つことを願っています。
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)
pandasライブラリを使用することをお勧めします。
import pandas as pd
dataFrame = pd.read_Excel("/home/ilissa/Documents/AnacondaFiles/AZ_Palmetto_MUSC_searchterms.xlsx", sheetname = "PrivAlert Terms", parse_cols = 0)
パンダに慣れていない場合、または何らかの理由でopenpyxlを使用する必要がある場合、コードのエラーは、最初の列のみを選択していないことです。各行の各セルを明示的に呼び出します。最初の列のみが必要な場合は、各行の最初の列のみを取得します。
for row in sheet_ranges.iter_rows(row_offset=1):
print(row[0].value)
私の意見でははるかに簡単です
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)
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)])
それはかなり驚くべきアプローチであり、試してみる価値があります
簡単な関数を次に示します。
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)
ws.get_squared_range()
を使用して、返される単一の列などのセルの範囲を正確に制御します。
ZLNKの優れた応答を使用して、リスト内包表記を使用して同じ結果を1行で実現するこの関数を作成しました。
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')