python openpyxlでエクセルファイルをめった切り

import openpyxl

シートの操作

for文でシート名一覧を表示

for sheet in wb:
	print(sheet.title)
#>Sheet1
#>Sheet2
#>Sheet3

sheetを取得(3つの方法)

ws1=[Sheet1'] #1番目の方法
ws2=book.worksheets[2] #2番めの方法
ws3=book.get_sheet_by_name('Sheet3') #3番めの方法

シートの作成・削除(オブジェクト名とシート名を混同しないこと)

ws4=wb.create_sheet(title='Sheet4', index=4)#作成シート名'Sheet5',5番目のシート
ws5=wb.copy_worksheet(ws1)#book内コピー
ws5.title='Sheet5'
print(wb.sheetnames)
wb.remove(ws4)#削除
print(wb.sheetnames)

セルの操作

セルの値を取得

print(ws1['B2'].value)
print(ws1.cell(row=2,column=2).value)
#>東京都

cellオブジェクトからセルを操作

a1=ws1.cell(1,1)
print('A1:',a1.value)
#まとめprint(ws1.cell(1,1).value)
#>入ってたもの

—— セルの操作 ————–

print(ws1['B2'].value)
print(ws1.cell(row=2,column=2).value)
#>東京都

cellオブジェクトからセルを操作

a1=ws1.cell(1,1)
print('A1:',a1.value)
#>入ってたもの
A1の値を上書き
a1.value="何通りもいらんぜよ"
print(a1.value)
値の書き込み
ws2=wb['Sheet2'] #Sheet2を読み込む
#ws2.title='4WRITE' #Sheet2の名前を"4WRITE"に変更
ws2['B1']='TEST' #レンジA1に"TEST"と投入
ws2=wb['Sheet2'] #Sheet2を読み込む
#ws2.title='4WRITE' #Sheet2の名前を"4WRITE"に変更
ws2['B1']='TEST' #レンジA1に"TEST"と投入
セルに式を投入(=式の文字列)
ws2.cell(9,3,value="=sum('c2:c7')")
print(ws2.cell(9,3).value)
#=sum('c2:c7')
セルの列の記号を取得
print(a1.column_letter)
#>A
print(a1.coordinate)
#>A1
列名、行番号、値を出力
print('列' + str(range1.column) +       # 列名のみを取得
      ', 行' + str(range1.row) +   # 行番号のみを取得
      ' : ' + range1.value)        # セルの値を取得
#列2, 行2 : 東京都
# セル番地、値を出力
print('セル' + range1.coordinate + # 行列のセル番地を取得
      ' : ' + range1.value)        # セルの値を取得
#セルB2 : 東京都
range[A1]のAを数字で指示
for i in range(65,69): # A-D
    rng=chr(i)+'1'     # A1-D1
    print(ws2[rng].value) # ws2[A1].value-ws2[D1].value
for文で行と更にforで列を取得
cv=[]#cell.value
for row in ws1.rows:
    for cell in row:
        #print(cell.value)
        cv.append(cell.value)
print(cv)
['何通りもいらんぜよ', 'セブンイレブン', 'ファミリーマート', 'ローソン', 'ミニストップ', 'デイリ−マート',・・・・・・・・・・・
for文で行を取得しつつ更にforで列を取得
tpl=ws1['A1:D5']
for i in tpl:
    for j in i:
        print(j.value)
今日のころちん
セブンイレブン
ファミリーマート
ローソン
1
東京都
2634
2356
・・・・
4
愛知県
1054
1379
for文で行を取得しつつ更にforで列を取得(1行目と1列目は読み込まない)
for row in ws1.iter_rows(min_row=2, min_col=2):#iter_rows(min_row=2,min_col=2) :
    for cell in row:
        print(cell.value)
東京都
2634
2356
1723
292
146
169
None
None
・・・・
千葉県
1090
621
611
200
141
12
None
None

コードまとめ

import openpyxl

#bookオブジェクトにファイルを読み込む
wb = openpyxl.load_workbook('cvs2018.xlsx')
print(wb.sheetnames)#シート全部を取得
print(wb.get_sheet_names())#同上
#>['Sheet1', 'Sheet2', 'Sheet3']

#for文でシート名一覧を表示
for sheet in wb:
	print(sheet.title)
#>Sheet1
#>Sheet2
#>Sheet3


#------ sheetを取得(3つの方法) --------------
ws1=wb['Sheet1'] #1番目の方法
ws2=wb.worksheets[2] #2番めの方法
ws3=wb.get_sheet_by_name('Sheet3') #3番めの方法,シート名で取得

#シートの作成・削除(オブジェクト名とシート名を混同しないこと)
ws4=wb.create_sheet(title='Sheet4', index=4)#作成シート名'Sheet5',5番目のシート
ws5=wb.copy_worksheet(ws1)#book内コピー
ws5.title='Sheet5'
print(wb.sheetnames)
wb.remove(ws4)#削除
print(wb.sheetnames)

#------ セルの操作 --------------
print(ws1['B2'].value)
print(ws1.cell(row=2,column=2).value)
#>東京都

#cellオブジェクトからセルを操作
a1=ws1.cell(1,1)
print('A1:',a1.value)
#>入ってたもの

#A1の値を上書き
a1.value="何通りもいらんぜよ"
print(a1.value)


# 値の書き込み
ws2=wb['Sheet2']#Sheet2を読み込む
#ws2.title='4WRITE'#Sheet2の名前を"4WRITE"に変更
ws2['B1']='TEST'#レンジA1に"TEST"と投入

#セルC9=cell(9,3)に式を投入
ws1.cell(9,3,value="=sum(c2:c7)")
ws1.cell(9,4).value='=sum(d2:d7'#D9にも

#セルの列の記号を取得
print(a1.column_letter)
#>A
print(a1.coordinate)
#>A1

openpyxl.utils.column_index_from_string("AX")
#>50

tpl=ws1['A1:D5']
print(tpl)
#((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>, <Cell 'Sheet1'.D1>),・・・

#for文で行と更にforで列を取得
cv=[]#cell.value
for row in ws1.rows:
    for cell in row:
        #print(cell.value)
        cv.append(cell.value)
print('print(cv)',cv)
#['今日のころちん', 'セブンイレブン',・・・・・

#for文で行を取得しつつ更にforで列を取得(1行目と1列目は読み込まない)
for row in ws1.iter_rows(min_row=2, min_col=2):#iter_rows(min_row=2,min_col=2) :
    for cell in row:
        print('print(cell.value',cell.value)

#東京都
#2634
#2356
#・・・・・・・




#-------- ファイル書き出し -------------
wb.save('cvs2018b.xlsx')

cvs2018.xlsx

今日のころちんセブンイレブンファミリーマートローソンミニストップデイリ−マートサークルKセイコーマート
1東京都2,6342,3561,723292146169
2大阪府1,1971,3321,1299514268
3神奈川県1,4009651,0921419773
4愛知県1,0541,37968321978292
5北海道9892336553
6埼玉県1,1967846751587811
7千葉県1,09062161120014112
sheet1