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
Скрипт Python с использованием xlwings не может открыть книгу Excel при запуске из планировщика задач Windows ⇐ Python
Программы на Python
1732435131
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/76735265/python-script-using-xlwings-fails-to-open-excel-workbook-when-run-from-windows-t[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия