connvoi.com

pythonでエクセルを書いてみるよ(xlsxwriter)

04 August 2018

人に見せるときはExcelになること多いので、pythonのxlsxwriterを使ってできるところは自動化していこうという試み。

xlswriter

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()

xlsxwriter screenshot

こんな感じになります。
公式のexampleに結構な量が書いてあるので、そのまま使えそう。
Examples — XlsxWriter Documentation

基本操作はだいたいこんな感じで、グラフ、テキストボックスも使えるみたいなので、使うときになったら書いていこう
データをtsv、csvにしてエクセルで読み込んでコピーとかがダルかったので積極的に使っていきたい。

  • tech
  • python