Скрипт Python с использованием xlwings не может открыть книгу Excel при запуске из планировщика задач WindowsPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Скрипт Python с использованием xlwings не может открыть книгу Excel при запуске из планировщика задач Windows

Сообщение Anonymous »

Windows 10
xlwings 0.30.8,
Microsoft Excel для Microsoft 365 MSO (версия 2302 16.0.16130.20586) 32 бит,
Python 3.9.12
Опишите вашу проблему (включая отслеживание!)
У меня возникла проблема с моим сценарием Python, который использует библиотеку xlwings для открытия книг Excel и работы с ними.
Когда я запускаю свой сценарий непосредственно из командной строки, все работает отлично. Однако когда я запускаю сценарий как запланированное задание с помощью планировщика задач Windows, сценарий не может открыть книгу.
Вот часть моего кода, которая вызывает проблему:
Вот часть моего кода, которая вызывает проблему:
Вот часть моего кода, которая вызывает проблему:
р>
app = xw.App(visible=False)
workbook = app.books.open(OUTPUT_EXCEL_FILE)

Скрипт успешно запускает первую строку, но не может выполнить вторую строку, которая пытается открыть книгу. Когда сценарию не удается открыть книгу, он не выдает ошибку, и выполнение просто останавливается.
Чтобы устранить эту проблему, я добавил сообщения журнала в открытый метод книги xlwings. class в исходном коде библиотеки xlwings. Из журналов видно, что выполнение останавливается при вызове self.impl.open(...) в методе open.
KeyError возникает, когда код пытается найти уже открытая книга с тем же именем, что и та, которую мы пытаемся открыть (impl = self.impl(name)). Исключение перехватывается, и выполнение должно перейти к открытию книги, но этого не происходит.
Я не уверен, почему сценарий не может открыть книгу при запуске из планировщика задач. но при запуске из командной строки проблем не возникает.
Я убедился, что путь к книге (OUTPUT_EXCEL_FILE) верен и что книга еще не открыта.
Любой совет по поводу того, что может быть причиной этой проблемы, и способы ее решения будут очень признательны. Заранее благодарим вас за помощь!
Соответствующая часть сценария выглядит следующим образом.
logger.debug('openedbook___' + OUTPUT_EXCEL_FILE)
Отладочный вывод для строка выполнена, но выполняется следующая строка, но процесс не продвигается.
import sqlite3
import datetime import xlwings as xw
import debuglog as logger

data_start_row = 11 employee_no_col = 3

def update_overtime_in_excel(config, OUTPUT_EXCEL_FILE): DB_FILE = config['DB_FILE'] EXTRA_INF = config['EXTRA_INF']

# Connect to the database
conn = sqlite3.connect(DB_FILE)
c = conn.cursor()
today = datetime.datetime.today()

# Start Excel application and open the workbook
logger.debug('openbook___' + OUTPUT_EXCEL_FILE)
app = xw.App(visible=False)

logger.debug('app___' + OUTPUT_EXCEL_FILE)
workbook = app.books.open(OUTPUT_EXCEL_FILE)

logger.debug('openedbook___' + OUTPUT_EXCEL_FILE)

# Process each sheet for each month
for sheet in workbook.sheets:

Когда я отлаживал следующий комментарий в xlwings main.py, печатается
"open5" и
оба "Не удалось открыть книгу с именем" и "Сведения об ошибке" ' выводим имя целевого файла (только имя файла, не являющееся полным путем) и прекращаем обработку.
def open(
self,
fullname=None,
update_links=None,
read_only=None,
format=None,
password=None,
write_res_password=None,
ignore_read_only_recommended=None,
origin=None,
delimiter=None,
editable=None,
notify=None,
converter=None,
add_to_mru=None,
local=None,
corrupt_load=None,
json=None,
):

"""
Opens a Book if it is not open yet and returns it. If it is already open,
it doesn't raise an exception but simply returns the Book object.

Parameters
----------
fullname : str or path-like object
filename or fully qualified filename, e.g. ``r'C:\\path\\to\\file.xlsx'``
or ``'file.xlsm'``. Without a full path, it looks for the file in the
current working directory.

Other Parameters
see: :meth:`xlwings.Book()`

Returns
-------
Book : Book that has been opened.

"""
logger.debug('open1')
if self.impl.app.engine.type == "remote":
return Book(impl=self.impl.open(json=json))

fullname = utils.fspath(fullname)

logger.debug('open2')

if not os.path.exists(fullname):
raise FileNotFoundError("No such file: '%s'" % fullname)
fullname = os.path.realpath(fullname)
_, name = os.path.split(fullname)

logger.debug('open3')

if self.impl.app.engine.type == "reader":
return Book(impl=self.impl.open(filename=fullname))

logger.debug('open4')

try:
impl = self.impl(name)
if not os.path.samefile(impl.fullname, fullname):
raise ValueError(
"Cannot open two workbooks named '%s', even if they are saved in"
"different locations." % name
)
except KeyError as e:
logger.debug('open5')
logger.debug('Failed to open workbook with name: %s', name)
logger.debug('Error details: %s', e)

impl = self.impl.open(
fullname,
update_links,
read_only,
format,
password,
write_res_password,
ignore_read_only_recommended,
origin,
delimiter,
editable,
notify,
converter,
add_to_mru,
local,
corrupt_load,
)

logger.debug('open6')

return Book(impl=impl)


Подробнее здесь: https://stackoverflow.com/questions/767 ... -windows-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Написание в существующую рабочую книгу Excel с использованием xlwings
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Написание в существующую рабочую книгу Excel с использованием xlwings
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Openpyxl загружает книгу только после того, как я сохраню книгу вручную
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Xlwings Excel и проблемы с планирователем задач Windows
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как получить список задач планировщика через Microsoft Graph, аналогичный моей веб -странице задач?
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»