You need to have win32com installed on your machine. Here is my code:
import win32com.client as win32
fname = "full+path+to+xls_file"
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)
wb.SaveAs(fname+"x", FileFormat = 51) #FileFormat = 51 is for .xlsx extension
wb.Close() #FileFormat = 56 is for .xls extension
excel.Application.Quit()
Just wrapped the code above in a function together with better path handling to make sure the excel process is getting closed.
from pathlib import Path
import win32com.client as win32
def convert_xls_to_xlsx(path: Path) -> None:
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(path.absolute())
# FileFormat=51 is for .xlsx extension
wb.SaveAs(str(path.absolute().with_suffix(".xlsx")), FileFormat=51)
wb.Close()
excel.Application.Quit()