使用win32com和Python将Excel数据粘贴到特定的MS Word段落中
我想复制Excel数据(例如表格或特定范围),并将其粘贴在MS Word文档段落的末尾,而不替换其文本。上述过程应该使用Python完成,最好使用pywin32(win32com.client) 下面的代码非常有用,但Excel数据只能粘贴在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
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中的“范围”可以是单个字符、段落中的整个句子、完整段落或整个文档之间的任何内容。玩弄它,你应该找到一种适合你的方法。