用Python保存Excel工作簿

时间:2018-10-31 09:53:12

标签: python excel sas

我是Python的新手,我需要打开一个文件夹中的所有Excel(一个一个),等待一些时间以使SAS加载项加载新数据,然后保存并关闭它。我尝试使用一些库,但无法获得预期的结果。

使用子流程:

import os
import subprocess

path = "C:\\Users\\...\\Desktop\\TEST_EXCEL"

for file in os.listdir(path):
    filename = os.path.join(path, file)
    if filename.endswith(".xlsx"):    
       proc = subprocess.Popen([filename], shell=True)
       time.sleep(60)
       subprocess.call(['taskkill', '/F', '/T', '/PID', str(proc.pid)])

Popen函数打开Excel,然后等待60秒,以便加载项可以加载数据,然后将其关闭。问题是我无法保存添加的新数据。

我也尝试过使用其他库,例如openpyxl,但无法打开Excel。我加载了Excel,但如果您不打开它,似乎就不会下载新数据。

openpyxl的示例:

import os
import openpyxl

path = "C:\\Users\\...\\Desktop\\TEST_EXCEL"

for file in os.listdir(path):
    filename = os.path.join(path, file)
    if filename.endswith(".xlsx"):    
       wb = openpyxl.load_workbook(filename)
       time.sleep(60)
       wb.save(filename)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您需要的模块是win32com,其代码如下:

from win32com.client import Dispatch
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Open(filename)
time.sleep(60)
wb.Close(True)

在这种情况下,wb.Close(True)保存并关闭文件。只需将其添加到listdir的循环中即可,它应该可以工作。 希望对您有所帮助!