是否可以只使用文件的名称而不是写出整个路径?

  • 本文关键字:路径 文件 是否 python path
  • 更新时间 :
  • 英文 :


是否可以只使用文件的名称,而不是在第4行和第5行中写出整个路径?

[1] from win32com import client
[2] excel = client.Dispatch("Excel.Application")
[3] word = client.Dispatch("Word.Application")
[4] doc = word.Documents.Open(r"C:Userscristword_automationSummary_templateTable1.docx")
[5] book=excel.Workbooks.Open(r"C:Userscristword_automationSummary_templateTable1.xlsx")
sheet = book.Worksheets(1)
sheet.Range("A1:D5").Copy()    
wdRange = doc.Content
wdRange.Collapse(0)
wdRange.PasteExcelTable(False, True, False) 

import os
os.remove('Table2.xlsx')

book.SaveAs('Table2.xlsx')
book.Close()
excel.Quit()
doc.SaveAs('TableOne.docx')
doc.Close()
word.Quit()

我试过这样做,但它给了我一个错误:

doc = word.Documents.Open('Table1.docx')
book = excel.Workbooks.Open('Table1.xlsx')

com_error:(-2147352567, '异常发生。', (0, 'Microsoft Excel', "对不起,我们找不到Table1.xlsx。它是否可能被移动、重命名或删除?chm', 0, -2146827284), None)

更新代码:

from win32com import client
import os
os.chdir(r"C:Userscristword_automationSummary_template")
excel = client.Dispatch("Excel.Application")
word = client.Dispatch("Word.Application")
doc = word.Documents.Open('Table1.docx')
book = excel.Workbooks.Open('Table1.xlsx')
sheet = book.Worksheets(1)
sheet.Range("A1:D5").Copy()    
wdRange = doc.Content
wdRange.Collapse(0)
wdRange.PasteExcelTable(False, True, False) 
os.remove('Table2.xlsx')
book.SaveAs('Table2.xlsx')
book.Close()
excel.Quit()
doc.SaveAs('TableOne.docx')
doc.Close()
word.Quit()

是有可能的。只需将import os行移动到文件的顶部(在win32com导入之前或之后,这无关紧要),然后在下一行放入

os.chdir(r"C:Userscristword_automationSummary_template")

你现在可以省略你发送到word.Documents.open()excel.Workbooks.open()的完整路径,就像你在问题的下半部分所显示的那样。

相关内容

  • 没有找到相关文章

最新更新