#■■■ コード例
import openpyxl
import glob
#対象フォルダからすべてのエクセルファイルのPathを取得
files = glob.glob("/Users/kabayon/Desktop/testdata/**.xlsx")
for file in files:
#print(file)
# 取得するブックを指定
#file_target = "test02.xlsx"
#dir_target = "/Users/kabayon/Desktop/testdata/"
#name_file = dir_target + file_target
name_file = file
# 計算式ではなく計算された結果の値をブックとして取得
book = openpyxl.load_workbook(name_file, data_only=True)
# ブックのすべてのシート名を取得
sheetnames = book.sheetnames
#print(sheetnames)
# シート毎に指定範囲のセルを取得
for sheetname in sheetnames:
sheet = book[sheetname]
for rows in sheet['B2':'G6']:
for cell in rows:
print(file,sheetname,cell.row,cell.column,cell.value)
#■■■ サブディレクトリ内のファイル一覧を取得する
import glob
files = glob.glob("/tmp/**/*")
for file in files:
print(file)
#■■■ シート名をすべて取得する
import openpyxl
# ブックを取得
book = openpyxl.load_workbook('C:\\pg\\人口一覧.xlsx')
# シート名を取得
sheets = book.sheetnames
print(sheets)
#[結果] ['第1表', '第2表']
#■■■ Excelのセルを読み込む(A1,B2指定)
import openpyxl
# ブックを取得
book = openpyxl.load_workbook('C:\\pg\\人口一覧.xlsx')
# シートを取得
sheet = book['sheet1']
# セルを取得
sheet['A9'].value
#[結果] '年 齢'
#■■■ Excelのセルを読み込む(セル数値を指定)
import openpyxl
# ブックを取得
book = openpyxl.load_workbook('C:\\pg\\人口一覧.xlsx')
# シートを取得
sheet = book['sheet1']
# セルを取得
sheet.cell(row=9,column=1).value
#[結果] '年 齢'
#■■■ 指定したセル範囲を取得する(セル記号)
import openpyxl
# ブックを取得
book = openpyxl.load_workbook('C:\\pg\\人口一覧.xlsx')
# シートを取得
sheet = book['Sheet1']
# 指定範囲のセルを取得
for rows in sheet['B6':'C8']:
for cell in rows:
print(cell.value)
#[結果] 北海道
#[結果] 2522526
#[結果] 青森県
#[結果] 619836
#[結果] 岩手県
#[結果] 607653
#■■■指定したセル範囲を取得する(セル数値)
import openpyxl
# ブックを取得
book = openpyxl.load_workbook('C:\\pg\\人口一覧.xlsx')
# シートを取得
sheet = book['Sheet1']
# 指定範囲のセルを取得
for rows in sheet.iter_rows(min_row=6, min_col=2, max_row=8, max_col=3):
for cell in rows:
print(cell.value)
#[結果] 北海道
#[結果] 2522526
#[結果] 青森県
#[結果] 619836
#[結果] 岩手県
#[結果] 607653
#■■■ デフォルトのままload_workbookを使った場合、セルの値をCellオブジェクトから取得すると、数式や関数による計算結果の値ではなく数式や関数そのままの文字列を取得するようになっています。数式や関数による計算結果をCellオブジェクトから取得したい場合は、load_workbookでエクセルを読み込む際に、data_only=Trueを引数に与えてください。
wb = openpyxl.load_workbook('office54.xlsx', data_only=True)