pythonでEXCELファイルを操作()

pythonEXCELファイルを操作
http://www.lisz-works.com/entry/openpyxl-basic を参考に

  • インストール
pip install openpyxl
  • 新しいファイルを開いてセルA1にhelloと書いて閉じる
import openpyxl as px

#openFile
wb=px.Workbook()
#Making sheet
ws=wb.create_sheet(title="sheet2")
#Select the sheet1
ws=wb["sheet2"]
##Imput "hello" in the cell A1
ws["A1"]="hello"
##Save work book
wb.save("test1.xlsx")
  • ファイルを開いてセルA1の内容を読み出して表示
import openpyxl as px

#open already exists File
wb=px.load_workbook("test1.xlsx")
#Select the sheet1
ws=wb["sheet2"]
##get "hello" in the cell A1
print ws["A1"].value
  • 参考:アルファベットの連続生成
v=[chr(i) for i in range(65,65+26)]
# [chr(i) for i in range(ord('A'), ord('Z')+1)]
  • 3行目のとりだし,3行目から5行目、A列目、AからD列目, A1からD4
 ws[3]
 ws[3:5]
 ws['A']
 ws['A:D']
 ws['A1':'D4']

https://openpyxl.readthedocs.io/en/stable/tutorial.html

  • EXECL表のCSV
    • data_only=TRUEは、数式(A3*A2など)で出力されることを防ぐ
    • EXCEL表の一部の領域を行でループ ws.iter_rows(min_row=3, min_col=1,max_col=64, max_row=52487)
#-*- coding: utf-8 -*-
import openpyxl as px
#open already exists File
wb=px.load_workbook("input.xlsx",data_only=True)
#Select the sheet1
#ws=wb["sheet2"]
ws=wb.active
ws["A3"]="ID"
ws["B3"]="ID_code"

##get "hello" in the cell A1
header_row=3
#v=ws[3]
#v=ws['A1':'B3']
#print v.value
#print ws["D3"]
##Save work book
#wb.save("test1.xlsx")
f=open("output.tsv","w")
for row in ws.iter_rows(min_row=3, min_col=1,max_col=64, max_row=52487):
        a=[]
        for cell in row:
                a.append(unicode(cell.value).strip().replace(u'\n',u''))
                #print cell
        str1=(u"\t").join(a)
        print str1
        f.write((str1+u"\n").encode('utf-8'))

f.close()

https://openpyxl.readthedocs.io/en/stable/tutorial.html