如何复制word文档的内容? [英] How do I copy the contents of a word document?

查看:174
本文介绍了如何复制word文档的内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想编写一个程序,从Word文档中复制文本并将其粘贴到另一个文档。我正在尝试使用 python-docx 库来做到这一点。我能够使用以下代码执行此操作,但它不会复制粗体斜体带下划线,也不会复制彩色部分,因为它们和只有他们的文字:

I want to write a program that copies text from a Word document and pastes it to another. I'm trying to do that using the python-docx library. I was able to do that with the following code, but it does not copy the bold, italic, underlined nor colored parts as they are and only their text:

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')





什么我试过了:



我试过直接复制对象进入输出文档,但它也不起作用:



What I have tried:

I've tried copying the paragraph object directly into the output document, but it doesn't work either:

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 函数执行此类操作。这是我写的函数:



In order to copy the text with its styles, you will need to write your own function, as there is no python-docx function that does such a thing. This is the function I wrote:

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





函数如何工作

1.在文件中添加一个新的对象。

2.添加一个新的运行到该段。

3.检查每个样式粗体斜体下划线 True False 。如果它是 True 运行将采用该样式,如果它是 False ,它不会是那种风格,如果它是,它将由它所在的段落的默认样式继承。然后它应用样式到运行

3.检查 RGB 中运行的颜色是什么,并将找到的颜色应用于运行

4.检查运行的字体是什么,并将找到的字体应用于运行

5.检查运行的对齐方式,并将找到的对齐设置应用于运行





如何使用功能:

您需要为其提供输出文档的名称和要复制的段落。

例如:





How The Function Works
1. Adds a new paragraph object to the file.
2. Adds a new run to that paragraph.
3. Checks whether each of the styles bold, italic and underline is True, False, None. If it's True, the run will be in that style, if it's False, it won't be in that style, and if it's None, it will be inherited by the default style of the paragraph it's in. Then it applies the styles to the run.
3. Checks what's the color of the run in RGB and applies the found color to the run.
4. Checks what's the font of the run and applies the found font to the run.
5. Checks what's the alignment of the run and applies the found alignment setting to the run.


How to Use the Function:
You need to give it the name you gave your output document and the paragraphs you want to copy.
For Example:

# 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')



如果你'我想复制整个文件,我建议你这样做:




If you'd like to copy the entire document I suggest you do this:

for para in input_doc.paragraphs:
    get_para_data(output_doc, para)

output_doc.save('OutputDoc.docx')


您需要从段落中获取样式信息,请参阅与文本相关的对象 - python -docx 0.8.6文档 [ ^ ]。
You need to get the style information from the paragraph, see Text-related objects — python-docx 0.8.6 documentation[^].


这篇关于如何复制word文档的内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆