如何复制word文档的内容?
How do I copy the contents of a word document?
我想编写一个程序,从 Word 文档复制文本并将其粘贴到另一个文档。我正在尝试使用 python-docx
库来做到这一点。我能够使用以下代码做到这一点,但它不会按原样复制 粗体 、 斜体 、带下划线或彩色的部分他们的文字:
from docx import Document
input = Document('SomeDoc.docx')
paragraphs = []
for para in input.paragraphs:
p = para.text
paragraphs.append(p)
output = Document()
for item in paragraphs:
output.add_paragraph(item)
output.save('OutputDoc.docx')
我也尝试过将 paragraph
对象直接复制到输出文档中,但它也不起作用:
from docx import Document
input = Document('SomeDoc.docx')
output = Document()
for para in input.paragraphs:
output.add_paragraph(para)
output.save('OutputDoc.docx')
为了复制文本及其样式,您需要编写自己的函数,因为没有 python-docx
函数可以执行此类操作。
这是我写的函数:
def get_para_data(output_doc_name, paragraph):
"""
Write the run to the new file and then set its font, bold, alignment, color etc. data.
"""
output_para = output_doc_name.add_paragraph()
for run in paragraph.runs:
output_run = output_para.add_run(run.text)
# Run's bold data
output_run.bold = run.bold
# Run's italic data
output_run.italic = run.italic
# Run's underline data
output_run.underline = run.underline
# Run's color data
output_run.font.color.rgb = run.font.color.rgb
# Run's font data
output_run.style.name = run.style.name
# Paragraph's alignment data
output_para.paragraph_format.alignment = paragraph.paragraph_format.alignment
函数的工作原理
- 向文件添加一个新的
paragraph
对象。
- 向该段落添加新的
run
。
- 检查粗体、斜体和下划线是否为
True
、False
、None
。如果是True
,运行就是那个风格,如果是False
,就不是那个风格,如果是None
,就是继承通过它所在段落的默认样式。然后它将样式应用于 运行.
- 检查 运行 的 RGB 颜色,并将找到的颜色应用到
run
。
- 检查 运行 的字体是什么并将找到的字体应用到
run
。
- 检查 运行 的对齐方式并将找到的对齐设置应用于
run
。
函数使用方法:
您需要为其指定输出文档的名称以及要复制的段落。
例如:
# Imports
input_doc = Document('InputDoc.docx')
output_doc = Document()
# Call the function
get_para_data(output_doc, input_doc.paragraphs[3])
# Save the new file
output_doc.save('OutputDoc.docx')
如果您想复制整个文档,我建议您这样做:
for para in input_doc.paragraphs:
get_para_data(output_doc, para)
output_doc.save('OutputDoc.docx')
我想编写一个程序,从 Word 文档复制文本并将其粘贴到另一个文档。我正在尝试使用 python-docx
库来做到这一点。我能够使用以下代码做到这一点,但它不会按原样复制 粗体 、 斜体 、带下划线或彩色的部分他们的文字:
from docx import Document
input = Document('SomeDoc.docx')
paragraphs = []
for para in input.paragraphs:
p = para.text
paragraphs.append(p)
output = Document()
for item in paragraphs:
output.add_paragraph(item)
output.save('OutputDoc.docx')
我也尝试过将 paragraph
对象直接复制到输出文档中,但它也不起作用:
from docx import Document
input = Document('SomeDoc.docx')
output = Document()
for para in input.paragraphs:
output.add_paragraph(para)
output.save('OutputDoc.docx')
为了复制文本及其样式,您需要编写自己的函数,因为没有 python-docx
函数可以执行此类操作。
这是我写的函数:
def get_para_data(output_doc_name, paragraph):
"""
Write the run to the new file and then set its font, bold, alignment, color etc. data.
"""
output_para = output_doc_name.add_paragraph()
for run in paragraph.runs:
output_run = output_para.add_run(run.text)
# Run's bold data
output_run.bold = run.bold
# Run's italic data
output_run.italic = run.italic
# Run's underline data
output_run.underline = run.underline
# Run's color data
output_run.font.color.rgb = run.font.color.rgb
# Run's font data
output_run.style.name = run.style.name
# Paragraph's alignment data
output_para.paragraph_format.alignment = paragraph.paragraph_format.alignment
函数的工作原理
- 向文件添加一个新的
paragraph
对象。 - 向该段落添加新的
run
。 - 检查粗体、斜体和下划线是否为
True
、False
、None
。如果是True
,运行就是那个风格,如果是False
,就不是那个风格,如果是None
,就是继承通过它所在段落的默认样式。然后它将样式应用于 运行. - 检查 运行 的 RGB 颜色,并将找到的颜色应用到
run
。 - 检查 运行 的字体是什么并将找到的字体应用到
run
。 - 检查 运行 的对齐方式并将找到的对齐设置应用于
run
。
函数使用方法:
您需要为其指定输出文档的名称以及要复制的段落。 例如:
# Imports
input_doc = Document('InputDoc.docx')
output_doc = Document()
# Call the function
get_para_data(output_doc, input_doc.paragraphs[3])
# Save the new file
output_doc.save('OutputDoc.docx')
如果您想复制整个文档,我建议您这样做:
for para in input_doc.paragraphs:
get_para_data(output_doc, para)
output_doc.save('OutputDoc.docx')