使用win32com和Python将Excel数据粘贴到特定的MS Word段落中

使用win32com和Python将Excel数据粘贴到特定的MS Word段落中,python,excel,ms-word,pywin32,win32com,Python,Excel,Ms Word,Pywin32,Win32com,我想复制Excel数据(例如表格或特定范围),并将其粘贴在MS Word文档段落的末尾,而不替换其文本。上述过程应该使用Python完成,最好使用pywin32(win32com.client) 下面的代码非常有用,但Excel数据只能粘贴在Word文档的开头: def copy_from_excel_paste_to_word(word_filename, excel_filename): # Word init word = client.Dispatch("Word.Ap

我想复制Excel数据(例如表格或特定范围),并将其粘贴在MS Word文档段落的末尾,而不替换其文本。上述过程应该使用Python完成,最好使用pywin32(win32com.client)

下面的代码非常有用,但Excel数据只能粘贴在Word文档的开头:

def copy_from_excel_paste_to_word(word_filename, excel_filename):

    # Word init
    word = client.Dispatch("Word.Application")
    word.Visible = True
    report = word.Documents.Open(word_path)
    wdRange = report.Content

    # Excel init
    excel = client.Dispatch("Excel.Application")
    checklist = excel.Workbooks.Open(excel_path)
    sheet = checklist.Worksheets("Names")
    sheet.Range("B2:D15").Copy()

    # Paste Excel data at the beginning of the doc, while keeping doc data
    wdRange.Collapse(1)
    wdRange.PasteExcelTable(False, False, False) # ? How can i specify the paste location ?

    # Save and quit
    word.ActiveDocument.Close(SaveChanges=True)
    excel.Quit()
    word.Quit()

要折叠到任何
范围的末尾而不是开头

# Paste Excel data at the end of the doc, while keeping doc data
wdRange.Collapse(0)
注意:要查看此类信息,请启动Word。按Alt+F11打开VBA编辑器,然后按F2启动对象浏览器。例如,如果随后在搜索框中键入
折叠
,则可以单击该搜索框并按F1键以获取帮助主题


您还将在结果列表的更下方看到条目
WdCollapseDirection
,它将显示可以传递给
Collapse
方法的值。单击该按钮,底部列表中将显示两个枚举。单击其中一个,然后查看最底部的窗格,查看代码所需的数值(0或1)。

要折叠到末尾而不是任何
范围的开头,请执行以下操作:

# Paste Excel data at the end of the doc, while keeping doc data
wdRange.Collapse(0)
注意:要查看此类信息,请启动Word。按Alt+F11打开VBA编辑器,然后按F2启动对象浏览器。例如,如果随后在搜索框中键入
折叠
,则可以单击该搜索框并按F1键以获取帮助主题


您还将在结果列表的更下方看到条目
WdCollapseDirection
,它将显示可以传递给
Collapse
方法的值。单击该按钮,底部列表中将显示两个枚举。单击一个,然后查看最底部的窗格,查看代码所需的数值(0或1)。

您可以通过指定要添加的对象范围来控制表的位置。目前,您可以将整个文档折叠到一个区域中,并将其粘贴到该区域的前面:@tst谢谢您的回答。如果您能为我提供一个代码示例,那就太好了。我现在没有办法测试它,但请尝试在报告中的rng的StoryRanges
上迭代。StoryRanges
,然后扫描
rng
以了解具体的代码identifiers@tst无论如何谢谢你!既然没有相关(详细)文档,我怎么知道所有这些方法(如StoryRange)及其属性?请阅读“对象模型”一词。检查“文档”(等同于“报告”)中包含哪些对象以及每个子对象是什么。VBA中的“范围”可以是单个字符、段落中的整个句子、完整段落或整个文档之间的任何内容。玩弄它,你应该找到一种适合你的方法。通过指定要添加表的对象范围,可以控制表的位置。目前,您可以将整个文档折叠到一个区域中,并将其粘贴到该区域的前面:@tst谢谢您的回答。如果您能为我提供一个代码示例,那就太好了。我现在没有办法测试它,但请尝试在报告中的rng的StoryRanges
上迭代。StoryRanges
,然后扫描
rng
以了解具体的代码identifiers@tst无论如何谢谢你!既然没有相关(详细)文档,我怎么知道所有这些方法(如StoryRange)及其属性?请阅读“对象模型”一词。检查“文档”(等同于“报告”)中包含哪些对象以及每个子对象是什么。VBA中的“范围”可以是单个字符、段落中的整个句子、完整段落或整个文档之间的任何内容。玩弄它,你应该找到一种适合你的方法。