欢迎访问宙启技术站
智能推送

Python中的Word()类:快速生成和格式化Word文档

发布时间:2023-12-28 22:23:55

Python中的Word()类是一个用于快速生成和格式化Word文档的工具。它提供了一些方便的方法和属性,可以轻松地创建标题、段落、列表、表格和图片等内容,同时也可以设置字体、颜色、对齐方式等样式。

Word()类的使用非常简单,只需要在程序中导入相应的库,并创建一个Word对象即可开始构建文档。下面是一个简单的示例代码:

from docx import Document
from docx.shared import Pt

class Word:
    def __init__(self):
        self.doc = Document()

    def add_title(self, text, size=14, bold=True, italic=False, align='center'):
        title = self.doc.add_paragraph()
        run = title.add_run(text)
        run.font.size = Pt(size)
        run.bold = bold
        run.italic = italic
        title.alignment = self._get_alignment(align)

    def add_paragraph(self, text, size=12, bold=False, italic=False, align='left'):
        paragraph = self.doc.add_paragraph()
        run = paragraph.add_run(text)
        run.font.size = Pt(size)
        run.bold = bold
        run.italic = italic
        paragraph.alignment = self._get_alignment(align)

    def add_list(self, items, bullet_type='-', size=12, bold=False, italic=False, align='left'):
        for item in items:
            paragraph = self.doc.add_paragraph()
            run = paragraph.add_run(bullet_type + ' ' + item)
            run.font.size = Pt(size)
            run.bold = bold
            run.italic = italic
            paragraph.alignment = self._get_alignment(align)

    def add_table(self, data, headers=None, size=12, bold=False, italic=False, align='left'):
        table = self.doc.add_table(rows=len(data)+1, cols=len(data[0]))
        
        if headers:
            for i in range(len(headers)):
                header_cell = table.cell(0, i)
                header_cell.text = headers[i]
        
        for r in range(len(data)):
            for c in range(len(data[r])):
                cell = table.cell(r+1, c)
                cell.text = str(data[r][c])

        for row in table.rows:
            for cell in row.cells:
                paragraphs = cell.paragraphs
                for paragraph in paragraphs:
                    for run in paragraph.runs:
                        run.font.size = Pt(size)
                        run.bold = bold
                        run.italic = italic
                paragraph.alignment = self._get_alignment(align)

    def add_picture(self, path, width=400, height=300):
        self.doc.add_picture(path, width=Pt(width), height=Pt(height))

    def save(self, filename):
        self.doc.save(filename)

    def _get_alignment(self, align):
        if align == 'left':
            return WD_PARAGRAPH_ALIGNMENT.LEFT
        elif align == 'center':
            return WD_PARAGRAPH_ALIGNMENT.CENTER
        elif align == 'right':
            return WD_PARAGRAPH_ALIGNMENT.RIGHT
        else:
            return WD_PARAGRAPH_ALIGNMENT.LEFT

以上代码定义了一个名为Word的类,使用了python-docx库来操作Word文档。该类提供了几个常用的方法,包括add_title()、add_paragraph()、add_list()、add_table()和add_picture()等,分别用于添加标题、段落、列表、表格和图片。另外,save()方法用于保存文档。

下面是一个使用Word()类生成Word文档的示例:

word = Word()

word.add_title('My Document', size=20, bold=True, align='center')

word.add_paragraph('This is a paragraph.', size=12, italic=True, align='left')

word.add_list(['Item 1', 'Item 2', 'Item 3'], bullet_type='-', size=12, bold=False, align='left')

data = [['Name', 'Age', 'Gender'],
        ['John', '25', 'Male'],
        ['Lisa', '30', 'Female']]
word.add_table(data, headers=True, size=12, align='center')

word.add_picture('image.jpg', width=400, height=300)

word.save('my_document.docx')

以上代码生成了一个包含标题、段落、列表、表格和图片的Word文档,并保存为"my_document.docx"文件。可以根据实际需求调用相应的方法,并设置相应的参数来构建文档。

总之,Python中的Word()类为我们提供了一个简单有效的方式来生成和格式化Word文档。使用它可以大大简化我们的工作,节省时间和精力。希望以上介绍对你有所帮助!