2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Python]エクセルファイルの写し作業における自動化を実装

Posted at

##pythonによる自動化
今回は、インターンにおいて既存エクセルファイルを今回使いたい形に変更する際にpythonのライブラリを用いた自動化を行ったのでココに記しておく。

##やりたいこと
複数のスプレッドシートに個人情報が記載されているものがすでにあるのだが、そ子から毎回一つ一つ引っ張ってくるのは面倒だから、一つのスプレッドシートにまとめてその情報を一括でクライアントに渡した方が楽。となると、指定の箇所を一つ一つ新しいスプレッドシートに写してく必要があるのだが、手作業はかなり面倒。そこでpythonで自動化したい。

##使用するライブラリ
####openpyxl
(https://note.nkmk.me/python-openpyxl-usage/)

##アルゴリズム

  • シートごとに指定の値を抜き出して一つの配列を作成
  • その配列を新たな配列に入れて2次元配列を作っていく
  • 二次元配列を元に書き込んでいく
sample.py
def write_list_2d(sheet, l_2d, start_row, start_col):
    for y, row in enumerate(l_2d):
        for x, cell in enumerate(row):
            sheet.cell(row=start_row + y,
                       column=start_col + x,
                       value=l_2d[y][x])

l_2d = [['four', 41, 42, 43], ['five', 51, 52, 53]]

write_list_2d(sheet, l_2d, 5, 1)

####注意
最後にsaveを忘れずに。これしないと反映されません。

sample.py
wb_to.save('hoge.xlsx')

##正規表現の利用
抜き出した文字をさらに分割したい場合には正規表現を使う。
今回やりたかったのは以下
「hogehogehoge(fugafuga)」
をカッコ内とそれ以外の二つに分けたかった。
結論は以下の通り。

sample.py
list = re.match(r"(?P<comment>.*?)(?:[\((](?P<name>.*?)[)\)])?$", sentence)
            temp.append(list['comment'])
            temp.append(list['name'])
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?