programing

python win32 COM 마감 엑셀 워크북

codeshow 2023. 9. 14. 23:44
반응형

python win32 COM 마감 엑셀 워크북

COM에서 여러 가지 워크북(excell xlsx 형식)을 열어 엉망으로 만듭니다.프로그램이 진행됨에 따라 하나의 특정 워크북을 닫고 나머지 워크북은 열어두고 싶습니다.

워크북 하나를 닫으려면 어떻게 해야 합니까?(엑셀 어플리케이션 전체 삭제)

xl = Dispatch("Excel.Application")
xl.Visible = False
try:
    output = xl.Workbooks.Open(workbookName)
    output2 = xl.Workbooks.Open(workbook2Name)
except com_error:
    print "you screwed up blahblahblah"
    exit()

#work on some stuff
#close output but keep output2 open

Workbook COM 개체에는 Close() 메서드가 있습니다.기본적으로 다음과 같은 것이어야 합니다.

xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Open('New Workbook.xlsx')
# do some stuff
wb.Close(True) # save the workbook

위의 내용은 단순한 뼈대에 불과합니다. 여기 Office 2010에 대한 제 컴퓨터에서 작동하는 코드가 있습니다.

from win32com.client import Dispatch
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Add()
ws = wb.Worksheets.Add()
cell = ws.Cells(1)
cell.Value = 'Some text'
wb.Close(True, r'C:\Path\to\folder\Test.xlsx')

물론, 그러면 새 xlsx 파일이 생성됩니다.하지만 다음과 같이 같은 세션에서 파일을 성공적으로 열고 수정할 수 있습니다.

wb = xl.Workbooks.Open(r'C:\Path\to\folder\Test.xlsx')
ws = wb.Worksheets(1)
cell = ws.Cells(2)
cell.Value = 'Some more text'
wb.Close(True)

그게 도움이 될지는 모르겠지만...

다음 코드를 사용해 볼 수도 있습니다.

excel = Dispatch("Excel.Application")
excel.Visible = False
workbook = excel.Workbooks.Open(fileName)

# with saving
excel.DisplayAlerts = False
if saveAs:
    excel.ActiveWorkbook.SaveAs(fullFileNameToSave)
else:
    excel.ActiveWorkbook.Save()
excel.Quit()

#without saving

map(lambda book: book.Close(False), excel.Workbooks)
excel.Quit()

이 함수는 열려 있는 모든 엑셀 파일을 닫습니다.

import os

def closeFile():

    try:
        os.system('TASKKILL /F /IM excel.exe')

    except Exception:
        print("KU")

closeFile()
def setAutoFilter(self,ws,AmountToMatch):
        amounttopass = f"{AmountToMatch}"
        print("The Amount  of that month is  ::",amounttopass)
        ws.Range("B:G").AutoFilter(Field=6, Criteria1=amounttopass,VisibleDropDown=False)
        time.sleep(timeout)

언급URL : https://stackoverflow.com/questions/6337595/python-win32-com-closing-excel-workbook

반응형