1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コメントとり

Last updated at Posted at 2024-10-29
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)


1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?