PythonでExcel操作 シート追加と削除についてまとめてみる
先日、データをPythonを用いてexcel化する方法をまとめました。
elsammit-beginnerblg.hatenablog.com
こちらの方法でexcel化してデータをグラフ化しているのですが、
ちょっとデータの種類が増えてきたことに伴い、シート1枚では管理が難しくなってきました。。
そこで今回は別シートを作成したり、無駄なシートを削除する方法に関してまとめていきたいと思います。
また、後で何のシートなのかが分かるようにシート名を追加する方法も載せておこうと思います。
■環境構築
前回と同様に、pythonのバージョンは、
Python 3.7.3
です。
前回もお話した通り、Python3.x.xであれば使用出来る手順かと思います。
また、今回も例によって用いるライブラリはopenpyxlです。
openpyxlは下記によりインストール可能です。
pip install openpyxl
■Excelシートを追加してみる
ではopenpyxlでExcelシートを追加していきたいと思います。
単純にシートを追加したいだけであれば、
from openpyxl import Workbook wb = Workbook() ws = wb.create_sheet()
でOKです。
実際にシートを作成しているコードは、
ws = wb.create_sheet()
になります。
wb変数は、
wb = Workbook()
により生成したExcel作業データになります。
Excelファイルを開いてシートを追加した感じのコードが上記コードですね。
前回のコードを流用すると、データがこちらとして、
dataX1 = ["index",1,2,3,4,5] dataY1 = [ ["data1",10,5,30,50,80], ["data2",100,5,30,10,100] ] dataX2 = ["index",6,7,8,9,10] dataY2 = [ ["data1",20,15,40,60,90], ["data2",110,15,40,20,110] ]
こちらのようなコードを作成すると、
def DataToXmlFiles(dataX1, dataY1, dataX2, dataY2, outfile): wb = Workbook() ws = wb.active for var in range(len(dataX1)): ws.cell(row=var+1,column=1).value = dataX1[var] for i in range(2): ws.cell(row=var+1, column=i+2).value = float(dataY1[i][var]) ws = wb.create_sheet() for var in range(len(dataX2)): ws.cell(row=var+1,column=1).value = dataX2[var] for i in range(2): ws.cell(row=var+1, column=i+2).value = float(dataY2[i][var]) wb.save(outfile)
1枚目のシートにdataX1、dataY1のペアのデータ
2枚目のシートにdataX2、dataY2のペアのデータ
がそれぞれ書き込まれるかと思います。
シートの位置ですが、create_sheet関数の引数にシートのindex番号を渡せばOKです。
ws = wb.create_sheet(index=シート位置を指定する番号)
※左から0、1、2、、、となります。
■Excelシートを削除してみる
では次にExcelシートを削除してみます。
といってもこちらもシート追加と同様に数行で済みます。
wb = Workbook()
wb.remove_sheet(wb.get_sheet_by_name('シート名'))
実際にシートの削除処理を行っているのは、
wb.remove_sheet(wb.get_sheet_by_name('シート名'))
です。
Excelに含まれているシート名の一覧を見たい場合には、
wb = Workbook() wb.sheetnames
でOKです。
sheetnamesによりリスト型でシート名が返ってきますので、
削除したいシート名を検索して、
remove_sheet関数で削除を実行すればOKです。
■シートに名前を付ける
シートの追加と削除が行えるようになりました。
シートを管理するにあたりシート名があった方が管理しやすいかと思います。
シート名を追加するコードはこちらになります。
ws.title = "シート名"
wsは現在使用・選択しているシートになっておりますので、
現在使用しているシートにシート名を付与しています。
使用するシートを切り替える方法は、
ws = wb.worksheets[ シート番号 ]
で切り替えが可能です。
ここでシート番号は左から0、1、2、、、、
となります。
例えば、シートの2番目をhogeという名前にしたい場合には、
ws = wb.worksheets[1] ws.title = "hoge"
とすればOKです。
■最後に
今回はopenpyxlでシートの管理を行ってみました。
Excel化は結構便利なので、これからも使っていきたいと思います。
また気づいたことなどあったらまとめていきたいと思いますので、よろしくお願いいたします。