from docx import Document
from openpyxl import Workbook
import re
from datetime import datetime
def get_word_comments(doc_path):
# Wordドキュメントの読み込み
doc = Document(doc_path)
comments_data = []
# コメントの抽出
for comment in doc.comments:
# コメント内容から改行を削除
comment_text = re.sub(r'\n+', ' ', comment.text.strip())
# コメントが挿入された文、または図の取得
if comment.parent:
# コメントが挿入されている内容がテキストの場合
commented_sentence = comment.parent.text.strip() if comment.parent.text.strip() else ""
commented_figure = "" # 図がない場合は空白
else:
# コメントが図やオブジェクトに挿入されている場合
commented_sentence = ""
commented_figure = "図やオブジェクト"
# コメント情報の取得
comment_info = {
'ページ数': '', # ページ数取得が難しいため空白
'行数': '', # 行数取得が難しいため空白
'コメントが挿入された文': commented_sentence,
'コメントが挿入された図': commented_figure,
'コメント者': comment.author,
'コメント日時': comment.date.strftime('%Y-%m-%d %H:%M:%S') if comment.date else "",
'コメント内容': comment_text
}
comments_data.append(comment_info)
return comments_data
def save_to_excel(data, excel_path):
# Excelファイルの作成
wb = Workbook()
ws = wb.active
ws.title = "コメントリスト"
# ヘッダーの設定
headers = ["ページ数", "行数", "コメントが挿入された文", "コメントが挿入された図", "コメント者", "コメント日時", "コメント内容"]
ws.append(headers)
# データの挿入
for item in data:
ws.append([
item['ページ数'],
item['行数'],
item['コメントが挿入された文'],
item['コメントが挿入された図'],
item['コメント者'],
item['コメント日時'],
item['コメント内容']
])
# Excelファイルの保存
wb.save(excel_path)
# 実行例
doc_path = "sample.docx" # 対象のWordファイル
excel_path = "コメントリスト.xlsx" # 出力先Excelファイル
comments_data = get_word_comments(doc_path)
save_to_excel(comments_data, excel_path)
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme