#はじめに
ワードに書かれた段落ごとの情報をエクセルに列ごとに格納したいことがあり、手作業でやるには量が多かったのでコード化してみました。毎度ですが、コードは自己責任での利用をお願いします。
#手順
①モジュールとして、docxとopenpyxlを使います。
②まずワードファイル(original.docx)から文書を読み込んでパラグラフごとにリストに格納をしていきます。
③次にエクセルのワークブック・ワークシートを作成します。
④作成したワークシートにリストの内容を順に書き込んでいきます。ただし、改行を2回しているような場合、リストに空の要素が含まれているので、それらは除外するようにします。
⑤最後にワークシートをエクセルファイル(output.xlsx)として保存します。
#Google Colaboratoryを使う場合
モジュールのインストールが必要になるので、以下を実行してください。
!pip install python-docx
!pip install openpyxl
また、Google Driveを使うので、あらかじめGoogle DriveとGoogle Colabをつなげておく(マウントする)必要があります。ファイルのところでGoogle Driveのアイコンをクリックしてマウントするか、以下のコードを実行しておきます。
from google.colab import drive
drive.mount('/content/drive')
#いざコード
import docx
doc = docx.Document("/content/drive/MyDrive/original.docx")
num = 0
data = []
# wordファイルからの読み込み
for para in doc.paragraphs:
num = num + 1
data.append(para.text)
import openpyxl
# 新しいブックの作成
wb = openpyxl.Workbook()
# シートの取り出し
ws =wb.worksheets[0]
# EXCELへの書き込み(ワードファイルの改行の仕方によって空のデータがありうるので、
# それをそのまま書き込まない条件を追加しています。)
num = 0
for i in range(0,len(data)):
if len(data[i])==0:
continue
ws.cell(row=num+1,column=1,value=data[i])
num = num + 1
# エクセルファイルとして保存
wb.save('/content/drive/MyDrive/output.xlsx')
#最後に
ちょっとしたワード、エクセルファイルの扱いに参考になるのではないでしょうか?このコードで使ったモジュールは大変実用的で、手作業でやっていたことを自動化できます。これらのモジュールを解説したブログなどはたくさんありますので、関心がある方はぜひ検索して覗いてみてください。