Когда я помещаю один из этих файлов на Onedrive, я не могу его открыть. Но если я открою его на своем ноутбуке с помощью libreoffice, сохраню и закрою, а затем снова перенесу на Onedrive, его можно будет редактировать онлайн.
Я хотел бы автоматизировать этот процесс с помощью сценария Python. Для каждого сгенерированного файла xlsx:
- откройте его с помощью приложения по умолчанию
- сохраните
- закройте
Вот попытка минимализма
Код: Выделить всё
#!/usr/bin/env python
from openpyxl import Workbook
from pynput.keyboard import Key, Controller
import subprocess # pour lancer des processus
import time
from platform import system
nom_os = system().lower()
if "windows" in nom_os:
# programme = "start"
programme = r"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
elif "osx" in nom_os or "darwin" in nom_os:
programme = "open"
else:
programme = "xdg-open"
fichier = r"./essai.xlsx"
durées=[3.5, .7, 1.]
classeur = Workbook()
classeur.save(fichier) # saves empty xlsx
keyboard = Controller()
# opens xlsx file
_sp_ = subprocess.Popen([programme, str(fichier)], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# Pause to give workbook time to fully open.
time.sleep(durées[0])
# fills first cell in xlsx file
keyboard.type('azerty')
# saves
with keyboard.pressed(Key.ctrl):
keyboard.tap('s')
# Pause et validation pour confirmer l'enregistrement en xlsx
time.sleep(durées[1])
# closes
with keyboard.pressed(Key.ctrl):
keyboard.tap('q')
# Pause to give workbook time to fully close.
time.sleep(durées[2])
_sp_.terminate()
С помощью pyautogui
Код: Выделить всё
from openpyxl import Workbook
import subprocess # pour lancer des processus
import time
from platform import system
import pyautogui
nom_os = system().lower()
if "windows" in nom_os:
# programme = "start"
programme = r"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
elif "osx" in nom_os or "darwin" in nom_os:
programme = "open"
else:
programme = "xdg-open"
fichier = r"./essai.xlsx"
durées=[5, .7, 1.]
classeur = Workbook()
classeur.save(fichier) # saves empty xlsx
_sp_ = subprocess.Popen([programme, str(fichier)], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# Pause to give workbook time to fully open.
time.sleep(durées[0])
pyautogui.click()
pyautogui.write("azerty")
pyautogui.press('enter')
time.sleep(durées[1])
pyautogui.hotkey('ctrl', 's')
pyautogui.hotkey('ctrl', 'q')
time.sleep(durées[2])
- Файл xlsx открывается в libreoffice (фокус на этом окне)
- но сценарий Python продолжается без взаимодействия с клавиатурой.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -xlsx-file
Мобильная версия