【openpyxl】pythonでExcelのデータを取得

pythonでopenpyxlを使用して、Excelの値を取得する

 

 

 

 

完成コードと出力結果

最終的に完成するコードと出力結果
今回は取得するExcelpythonファイルと同じフォルダに格納する

Excel

f:id:haru0003:20201115151940p:plain

コード
#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の場合、セルとして返す