【openpyxl】pythonでExcelのデータを取得
完成コードと出力結果
最終的に完成するコードと出力結果
今回は取得するExcelはpythonファイルと同じフォルダに格納する
Excel
コード
#openpyxlをimport
import openpyxl
#Excelファイル取得
wb = openpyxl.load_workbook('Book1.xlsx')
ws = wb.get_sheet_by_name('Sheet1')
#セルを取得
for row in ws.iter_rows(values_only=True):
print(row)
出力結果
(1, 2, 3, '合計')
('イチゴ', 'バナナ', 'リンゴ', None)
(100, 200, 300, '=SUM(A3:C3)')
(None, None, None, None)
('値段表', None, None, None)
事前準備
openpyxlをpipでインストール
pip install openpyxl
Excelシートの取得
openpyxlをimport
import openpyxl
Excelファイル、シートの指定
wb = openpyxl.load_workbook('Book1.xlsx')
ws = wb.get_sheet_by_name('Sheet1')
wb = openpyxl.load_workbook('Book1.xlsx')
で開くExcelファイルのパスや方法を指定する
パラメータは全部で5つ
- filename
ファイルのパス、またはオブジェクトを指定できる - read_only
指定するとことで読み取り専用となり、編集ができなくなる - keep_vba
vbaコンテンツを事前に保存できるようになる
使用できるということではないらしい - data_only
セルを参照した際に、数式だった場合、数式の結果を取得する
デフォルトだと無効 - keep_links
外部ワークブックへのリンクを保持するかどうか
デフォルトは有効
ws = wb.get_sheet_by_name('Sheet1')
で参照するシートを指定する
パラメータは1つのみでシート名となる
セルを取得
行ごとにセルをリストとして取得
#セルを取得
for row in ws.iter_rows(values_only=True):
print(row)
iter_rowsでは行ごとに値を取得する
何も指定しない場合、A1から始まり、
終わりは自動的に値のある行、列を判断してくれる
パラメータは全部で5つ
- min_col
読み取りを始める最小列 - min_row
読み取りを始める最小行 - max_col
読み取りを終える最大列 - max_row
読み取りを終える最大行 - values_only
Trueの場合、セルの値で返すようにする
Falseの場合、セルとして返す