pythonでエクセルを書いてみるよ(xlsxwriter)
人に見せるときはExcelになること多いので、pythonのxlsxwriterを使ってできるところは自動化していこうという試み。
importとかの初期宣言
import xlsxwriter
book = xlsxwriter.Workbook('test.xlsx')
Workbookで作成するファイルを指定する。基本的のこのbookをつかった変更がtest.xlsxに書き込まれていきます。
ワークシートの追加
sheet = book.add_worksheet('NAME_OF_SHEET')
add_worksheetでシートの追加。引数に名前を入れてなまえを指定。名前がない場合はsheet1,sheet2,sheet3,..とデフォルトが入って行く。
セルへの記述
line=0
row=0
sheet.write(line, row, 'test')
sheet.writeメソッドをつかってセルに書き込むことができる。 行、列番号を指定して、そのセルに指定した文字列を入れる。 上の場合、0行0列に文字列’test’を書き込む。
セルのフォーマットの変更
format=book.add_format({'bold': True, 'font_color': 'black', 'font_size':'14', 'bg_color':'#FFB900'})
sheet.write(0, 0, 'test', format)
bookのadd_formatを使うと、セルの書式設定ができる。 add_formatから返却されたオブジェクトを、writeの第4引数にして渡すとその書式で記入してくれる。 上の例はフォントカラーがブラック、サイズが14px、セルの背景がオレンジ、文字のBoldをする。
セルの幅を指定する
sheet.set_column(0,0, 20)
セルの幅を指定します。行、列の指定ではなくて、列の長さの指定になる。0,0であればA, 1,3であればB~Dの位置の幅が指定できる。
サンプル
import xlsxwriter
#test.xlsxを作成
book = xlsxwriter.Workbook('test.xlsx')
#段落用のフォーマット
titleformat=book.add_format({'bold': True, 'font_color': 'black', 'font_size':'14', 'bg_color':'#FFB900'})
#通常の文字用フォーマット
textformat=book.add_format({'bold': False, 'font_size':'14'})
#ワークシートテスト用を作成
sheet = book.add_worksheet('テスト用')
sheet.write(1, 0, 'xlxswriteのテスト', titleformat)
sheet.set_column(1, 0, 50)
sheet.write(2, 0, 'こんにちはこんにちは', textformat)
sheet.write(4, 0, 'サーバ一覧とか', titleformat)
sheet.set_column(3, 0, 50)
sheet.write(5, 0, '192.168.0.1', textformat)
sheet.write(6, 0, '192.168.0.2', textformat)
sheet.write(7, 0, '192.168.0.3', textformat)
sheet.write(8, 0, '192.168.0.4', textformat)
sheet.write(10, 0, 'URLとか', titleformat)
#urlの入力
sheet.write_url(11, 0, 'https://www.yahoo.co.jp', string='Yahoo')
sheet.write_url(12, 0, 'https://google.co.jp')
sheet.write_url(13,0, 'https://xlsxwriter.readthedocs.io/index.html')
book.close()
こんな感じになります。
公式のexampleに結構な量が書いてあるので、そのまま使えそう。
Examples — XlsxWriter Documentation
基本操作はだいたいこんな感じで、グラフ、テキストボックスも使えるみたいなので、使うときになったら書いていこう
データをtsv、csvにしてエクセルで読み込んでコピーとかがダルかったので積極的に使っていきたい。