Автоматизация шагов загрузки .csv файла в Excel с Python - PullRequest
0 голосов
/ 11 февраля 2019

Мне нужно регулярно загружать множество файлов .csv в Excel, что-то наподобие показанного здесь (до шага 9) -

Excel -> Данные -> Из текста -> 'Выберите файл, перейдите к его местоположению и нажмите «Импорт».' -> Мастер импорта текста Шаг 1 из3 .

Все эти шаги, которые я автоматизировал, написали небольшой скрипт Python, где я заставляю Python нажимать клавиши быстрого доступа (представьте, что вы работаете без мыши и перемещаетесь в Excel с помощью клавиш быстрого доступа).

import pyautogui
from pywinauto.application import Application
app = Application().start('C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.exe')
pyautogui.press('alt')
pyautogui.press('a')
pyautogui.press('f')
pyautogui.press('t')
pyautogui.typewrite(r'C:\Users\Jo\Revenue.txt')
pyautogui.press('enter')

После запуска вышеприведенного скрипта на python мне открывается окно Мастер импорта -

Import Wizard

Теперь, как я могу заставить Python выбрать 65001 : Unicode (UTF-8) из выпадающего списка?Как я могу указать в своем коде Python, чтобы выбрать эту кодировку?Любой вклад будет высоко оценен.

1 Ответ

0 голосов
/ 11 февраля 2019

Я так и сделаю.Добавление UTF-8 with BOM в начало файла автоматически указывает Excel на выбор UTF в раскрывающемся списке file origin:

import codecs
import pyautogui

from pywinauto.application import Application
from pywinauto.keyboard import SendKeys

from time import sleep

filename = r'C:\path\excel_automation\data1.txt'
global content

def add_utf8_bom(filename):
    with codecs.open(filename, 'r', 'utf-8') as f:
        content = f.read()
    with codecs.open(filename, 'w', 'utf-8') as f2:
        f2.write('\ufeff')
        f2.write(content)

add_utf8_bom(filename)
app = Application().start(r'C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE')
sleep(1)
#SendKeys('^n') #uncomment for excel 2016 or higher
sleep(1)
pyautogui.press('alt')
pyautogui.press('a')
pyautogui.press('f')
pyautogui.press('t')
pyautogui.typewrite(filename)
pyautogui.press('enter')

Кредит: https://stackoverflow.com/a/29900075/4551984

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...