python如何将数据写入docx的示例详解

 更新时间:2025年12月04日 09:46:31   作者:liliangcsdn  
docx是经常用到的文档格式,经常需要python批量生成docx文档,本文将和大家详细介绍一下如何用python写文本到docx,并以仿宋_GB2312为例示例如何设置格式,感兴趣的小伙伴可以了解下

docx是经常用到的文档格式,经常需要python批量生成docx文档。

这里示例如何用python写文本到docx,并以仿宋_GB2312为例示例如何设置格式。

所用代码示例参考和修改自网络资料。

1 添加段落示例

这里示例如何写段落到docx文件。

from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor

# 打开或创建一个Word文档
doc = Document()

# 添加一个新的段落
paragraph = doc.add_paragraph('这是一个有特定格式的段落。')
# 设置字体、大小和颜色
run = paragraph.add_run('这是加粗和蓝色的文本。')
run.bold = True
run.font.size = Pt(12)
run.font.color.rgb = RGBColor(0, 0, 255)

# 保存文档
doc.save('formatted_text.docx')

2 设置字体示例

docx经常需要设置中文字体、大小、颜色等,这里以仿宋_GB2312为例,示例设置过程。

2.1 默认设置

以下是全文统一设置字体、大小的示例,这里设置段落字体为三号仿宋-GB2312。

from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt, RGBColor

document = Document()
document.add_paragraph('您好,我是aaaaa')
# 设置文档默认字体
document.styles['Normal'].font.name = '仿宋_GB2312'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')
# 保存word文档
document.save('bbb.docx')

2.2 段落设置

添加段落后设置字体、字号、加粗、对齐,这里设置段落字体为三号仿宋-GB2312。

from docx import Document
from docx.shared import Pt

# 创建文档
doc = Document()

# 添加段落并设置字体
paragraph = doc.add_paragraph("这是三号仿宋-GB2312字体")

# 设置段落字体
run = paragraph.runs[0]
run.font.name = '仿宋_GB2312'  # 字体名称
run._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')  # 处理中文字体
run.font.size = Pt(16)  # 三号对应16磅

# 保存文档
doc.save("示例文档.docx")

3 完整设置示例

以下是完整版本的docx格式设置示例。

from docx import Document
from docx.shared import Pt, Inches
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH

doc = Document()

# 设置文档默认字体
doc.styles['Normal'].font.name = '仿宋_GB2312'
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')

# 添加标题
title = doc.add_heading("文档标题", 0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 添加正文
paragraph = doc.add_paragraph()
run = paragraph.add_run("这是一段使用三号仿宋-GB2312字体的文本。")
run.font.name = '仿宋_GB2312'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')
run.font.size = Pt(16)

doc.save("完整示例.docx")

Python高效操作Word:实用技巧与进阶方法

掌握Python对Word文档的基本操作是进一步深入学习的基础。本节将介绍如何使用python-docx库来创建新的Word文档、读取现有文档的内容,以及向文档中写入文本。

1. 创建Word文档

使用python-docx创建一个新的Word文档非常简单。以下代码展示了如何创建一个新文档并保存:

from docx import Document

# 创建一个新的Word文档
doc = Document()
# 添加一个段落
doc.add_paragraph('这是一个新的段落。')
# 保存文档
doc.save('new_document.docx')

2. 读取Word文档内容

读取现有Word文档也是python-docx的一个重要功能。以下示例代码展示了如何打开一个文档并读取其内容:

from docx import Document

# 打开一个已存在的Word文档
doc = Document('existing_document.docx')
# 遍历文档中的每个段落并打印
for para in doc.paragraphs:
    print(para.text)

3. 向Word文档写入文本

向Word文档中写入文本是一个常见需求。我们可以添加新的段落,甚至在现有段落中添加文本:

from docx import Document

# 打开一个已存在的Word文档
doc = Document('existing_document.docx')
# 向文档添加一个新的段落
doc.add_paragraph('这是一个新添加的段落。')
# 在第一个段落中添加文本
doc.paragraphs[0].add_run(' 这是添加到第一个段落的文本。')
# 保存文档
doc.save('updated_document.docx')

4. 插入图片和表格

python-docx不仅限于处理文本,还可以插入图片和创建表格。以下是如何操作的示例:

from docx import Document
from docx.shared import Inches

# 打开或创建一个Word文档
doc = Document()

# 插入图片
doc.add_picture('example.jpg', width=Inches(2.0))

# 创建一个表格
table = doc.add_table(rows=2, cols=3)
table.cell(0, 0).text = '第一行,第一列'
table.cell(1, 2).text = '第二行,第三列'

# 保存文档
doc.save('document_with_image_and_table.docx')

通过这些基本操作,我们可以实现对Word文档的基础控制和内容管理。这为进一步学习格式化、样式处理以及高级功能打下了坚实的基础。

5.格式化和样式处理

在Python中处理Word文档时,除了基本的文本操作,格式化和样式处理也是非常重要的方面。python-docx库提供了丰富的功能来设置文本格式和段落样式,使得文档看起来更加专业和吸引人。以下将介绍如何使用这些功能。

1. 文本格式设置

在Word文档中,我们经常需要设置字体、大小和颜色等文本格式。以下代码展示了如何对文档中的文本进行格式化:

from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor

# 打开或创建一个Word文档
doc = Document()

# 添加一个新的段落
paragraph = doc.add_paragraph('这是一个有特定格式的段落。')
# 设置字体、大小和颜色
run = paragraph.add_run('这是加粗和蓝色的文本。')
run.bold = True
run.font.size = Pt(12)
run.font.color.rgb = RGBColor(0, 0, 255)

# 保存文档
doc.save('formatted_text.docx')

2. 段落格式设置

除了文本格式,段落的格式化也同样重要。这包括设置对齐方式、行距等:

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt

# 打开或创建一个Word文档
doc = Document()

# 添加一个新的段落
paragraph = doc.add_paragraph('这是一个居中对齐的段落。')
# 设置段落的对齐方式
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 设置段落的行距
paragraph.paragraph_format.line_spacing = Pt(18)

# 保存文档
doc.save('paragraph_formatting.docx')

3. 列表和编号的应用

在Word文档中,列表和编号是常用来组织信息的工具。以下示例展示了如何创建有序和无序列表:

from docx import Document

# 打开或创建一个Word文档
doc = Document()

# 添加一个无序列表
doc.add_paragraph('无序列表项 1', style='List Bullet')
doc.add_paragraph('无序列表项 2', style='List Bullet')

# 添加一个有序列表
doc.add_paragraph('有序列表项 1', style='List Number')
doc.add_paragraph('有序列表项 2', style='List Number')

# 保存文档
doc.save('lists_in_document.docx')

4. 表格样式和布局调整

python-docx还允许我们在文档中插入和格式化表格。以下代码展示了如何创建一个表格并对其进行样式设置:

from docx import Document
from docx.shared import Inches
from docx.oxml import OxmlElement

# 打开或创建一个Word文档
doc = Document()

# 创建一个表格
table = doc.add_table(rows=3, cols=3)
table.style = 'Table Grid'

# 合并单元格
a = table.cell(0, 0)
b = table.cell(0, 1)
a.merge(b)

# 设置单元格宽度
for row in table.rows:
    for cell in row.cells:
        cell.width = Inches(1.5)

# 添加文本到表格
for i in range(3):
    for j in range(3):
        table.cell(i, j).text = f'单元格 {i+1}, {j+1}'

# 保存文档
doc.save('table_in_document.docx')

通过上述方法,可以使Word文档的格式和样式更加丰富和专业,大大提高文档的整体质量和阅读体验。

6.高级功能:自动化和脚本编写

随着对Python和Word交互的深入理解,我们可以开始探索一些更高级的功能,特别是自动化和脚本编写。这些功能能够大大提高工作效率,尤其是在处理大量文档或复杂文档操作时。

1. 利用Python脚本批量处理Word文档

在有大量类似Word文档需要处理的情况下,批量处理变得尤为重要。以下示例展示了如何使用Python脚本来批量修改多个文档:

import os
from docx import Document

# 定义要处理的文档所在的文件夹
folder_path = 'path/to/documents'

# 遍历文件夹中的所有Word文档
for filename in os.listdir(folder_path):
    if filename.endswith('.docx'):
        doc_path = os.path.join(folder_path, filename)
        doc = Document(doc_path)

        # 在每个文档中添加一个新的段落
        doc.add_paragraph('这是通过自动化脚本添加的段落。')
        # 保存修改后的文档
        doc.save(doc_path)

2. Word文档中的数据提取和处理

在某些情况下,我们需要从Word文档中提取特定数据。以下代码示例展示了如何提取文档中的文本并进行处理:

from docx import Document

# 打开一个Word文档
doc = Document('example.docx')

# 提取文档中的文本
text = [para.text for para in doc.paragraphs]

# 对提取的文本进行处理
# 例如:统计文档的单词数
word_count = sum(len(para.split()) for para in text)
print(f'文档中的单词数为:{word_count}')

3. 使用模板创建Word文档

使用模板是创建具有一致格式文档的有效方法。可以预先创建一个包含所需格式和样式的模板文档,然后使用Python来填充具体内容:

from docx import Document

# 打开模板文档
template_doc = Document('template.docx')

# 向模板文档中添加内容
template_doc.add_paragraph('这是基于模板添加的内容。')

# 保存为新的文档
template_doc.save('new_document_from_template.docx')

4. 结合其他库进行数据分析与报告生成

Python的另一个强大之处在于其丰富的数据分析库,如Pandas。可以将这些库与python-docx结合使用,从而实现数据分析和报告生成的自动化:

import pandas as pd
from docx import Document

# 使用Pandas读取数据
data = pd.read_csv('data.csv')

# 进行数据分析
# 例如:计算数据的基本统计信息
summary = data.describe()

# 创建一个新的Word文档
doc = Document()
doc.add_paragraph('数据分析报告')

# 将分析结果添加到Word文档
doc.add_paragraph(str(summary))

# 保存文档
doc.save('analysis_report.docx')

这些高级功能不仅能够提高效率,还能够为处理复杂的文档任务提供强大的支持。

7.特殊技巧:图表、宏和交叉引用

在掌握了Python操作Word的基本和高级功能后,我们可以进一步探索一些特殊技巧,如图表的处理、宏的应用,以及交叉引用的管理。这些技巧能够使我们的文档更加动态和互动。

1. 在Word文档中插入和操作图表

虽然python-docx库本身不直接支持创建图表,但我们可以通过插入图片的方式来加入图表。例如,可以使用如matplotlib这样的图表库生成图表,然后将其作为图片插入到Word文档中:

import matplotlib.pyplot as plt
from docx import Document
from docx.shared import Inches
import os

# 生成图表
plt.figure()
plt.plot([1, 2, 3, 4])
plt.ylabel('一些数字')
plt.savefig('plot.png')

# 打开一个Word文档
doc = Document()
# 将图表作为图片插入
doc.add_picture('plot.png', width=Inches(4.0))

# 清理临时文件
os.remove('plot.png')

# 保存文档
doc.save('document_with_chart.docx')

2. 利用宏进行复杂操作

虽然Python不能直接在Word中创建或编辑宏,但可以操作包含宏的文档。这意味着可以利用宏来执行复杂的Word任务,而用Python来管理这些文档:

from docx import Document

# 打开一个包含宏的Word文档
doc = Document('macro_enabled_document.docm')

# 对文档进行操作(如添加文本)
doc.add_paragraph('这是一个包含宏的文档。')

# 保存文档
doc.save('macro_enabled_document_modified.docm')

3. 创建和管理文档中的交叉引用和链接

python-docx也支持在文档中创建和管理交叉引用和超链接。以下示例展示了如何添加超链接:

from docx import Document
from docx.oxml.shared import OxmlElement

# 打开或创建一个Word文档
doc = Document()

# 添加一个含有超链接的段落
paragraph = doc.add_paragraph()
hyperlink = OxmlElement('w:hyperlink')
hyperlink.set('w:anchor', 'target_paragraph')
run = paragraph.add_run('点击这里跳转到目标段落。')
run._r.append(hyperlink)

# 保存文档
doc.save('document_with_hyperlinks.docx')

通过这些特殊技巧的应用,可以使Word文档更加丰富和动态,提高文档的可用性和互动性。

8.错误处理和性能优化

在使用Python操作Word文档的过程中,有效的错误处理和性能优化对于开发稳定、高效的应用程序至关重要。本节将讨论在处理Word文档时常见的一些错误,以及如何优化代码的性能。

常见错误及其解决方法

在使用python-docx等库时,可能会遇到各种错误。以下是一些常见错误及其解决方法:

  • 文件无法打开或找不到文件:确保文件路径正确,文件没有被其他程序锁定。
  • 无法解析文档内容:这可能是由于文档格式不兼容。python-docx仅支持.docx格式的文档。
  • 修改后的文档格式错乱:确保所有的格式设置正确,特别是在批量修改文档时。

优化代码性能

处理大型文档或大量文档时,性能成为一个重要考虑。以下是一些优化性能的策略:

  • 批量处理优化:在处理大量文档时,考虑使用多线程或异步处理来提高效率。
  • 内存管理:处理大型文档时,注意资源的管理。在处理完每个文档后释放内存。
  • 避免不必要的操作:比如,在循环内部避免重复打开相同的文档。

高效处理大型Word文档

当处理非常大的Word文档时,以下技巧可能会有帮助:

  • 分段处理:将大文档分成多个部分处理,然后再合并。
  • 使用流式读取:如果可能,使用流式读取文档内容,避免一次性加载整个文档到内存。

通过有效的错误处理和性能优化,我们可以确保Python脚本在处理Word文档时既稳定又高效。

docx设置保存的word文档字体及大小

from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt, RGBColor

document = Document()
document.add_paragraph('您好,我是aaaaa')
"""
设置正文字型
    英文字型:Times New Roman
    中文字型:宋体
"""
document.styles['Normal'].font.name = 'Times New Roman'
document.styles['Normal'].element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
"""设置正文字体的大小"""
document.styles['Normal'].font.size = Pt(18)
"""设置正文字体颜色"""
document.styles['Normal'].font.color.rgb = RGBColor(0, 0, 0)
# 保存word文档
document.save('bbb.docx')

注意,字体大小设置的单位为磅,不是像素,word中字体与磅值对比如下:

到此这篇关于python如何将数据写入docx的示例详解的文章就介绍到这了,更多相关python数据写入docx内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论