NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Python, Excel pomocí xlwings a tisk do PDF - končí chybou pywintypes.com_error: (-2147352573, 'Člen nebyl nalezen.', None, None)

Aktivity
Avatar
Petr Vavřinec:26.1.2021 14:47

Ahoj přátelé.
Pomocí knihovny xlwings nasypu data do Excelovského sešitu na konkrétní list a potom se snažím ten list vytisknout pomocí funkce wb.to_pdf() nebo jsem to zkoušel i pomocí funkce wb.api.ExportAs­FixedFormat().

Obě dvě počínání končí chybou:
pywintypes.com_e­rror: (-2147352573, 'Člen nebyl nalezen.', None, None)

Vzal jsem ten nejjednodušší kód přímo z tohoto dokumentu https://docs.xlwings.org/…/latest/pdf/ a použil ho. Přesto to hází chybu.

Zkusil jsem:

"""
xlwings print sheet via to_pdf()
"""

import sys
import xlwings as xw

wb = xw.Book()
wb.sheets[0]["A1"].value = "Tohle se vytiskne v PDF"
wb.to_pdf()

Přeinstaloval jsem pywin32 a dokonce jsem spustil i "jeho setup" pro vituální prostředí, dle nápovědy:

Installing via PIP

You can install pywin32 via pip:

pip install pywin32

Note that if you want to use pywin32 for "system wide" features, such as registering COM objects or implementing Windows Services, then you must run the following command from an elevated command prompt:

python Scripts/pywin32_pos­tinstall.py -install

Dále jsem zkoušel všechny možné kombinace lomítek v cestě k souboru PDF, protože jsem se na StackOverflow dočetl, že win32com může být háklivé na to, jak vypadá řetězec cesty k souboru a zda je to cesta relativní a absoutiní. Zkusil jsem snad opravdu všechno.

Chci docílit: Chci prostě vytisknout list z Excelu nebo rozsah buněk z Excelu jako PDF.

Děkuji za radu.

 
Odpovědět
26.1.2021 14:47
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8.2.2021 16:11

google = xlwings print xls sheet as pdf

# Environment
# -----------
# OS: Windows 10
# Excel: 2013
# python: 3.7.4
# xlwings: 0.15.8

import os
import xlwings as xw

# Initialize new excel workbook
book = xw.Book()
sheet = book.sheets[0]
sheet.range("A1").value = "dolphins"

# Construct path for pdf file
current_work_dir = os.getcwd()
pdf_path = os.path.join(current_work_dir, "workbook_printout.pdf")

# Save excel workbook to pdf file
print(f"Saving workbook as '{pdf_path}' ...")
book.api.ExportAsFixedFormat(0, pdf_path)

# Open the created pdf file
print(f"Opening pdf file with default application ...")
os.startfile(pdf_path)
 
Nahoru Odpovědět
8.2.2021 16:11
Avatar
Odpovídá na Peter Mlich
Petr Vavřinec:10.2.2021 17:39

Díky moc.
To jsem samozřejmě tehdy našel taky, ale díky za tvůj čas. Přestože vezmu ten kód jak je a nijak ho neupravím, nebo i když alespoň nasměruju výstup do buňky v nějakém mém excel souboru, stejně to vždycky skončí s tou chybou, co jsem psal, viz. ten screenshot z VScode a dole žlutě podbarvený výstup z terminálu :-(

 
Nahoru Odpovědět
10.2.2021 17:39
Avatar
Petr Vavřinec:10.2.2021 19:53

Sice to není úplné řešení, ale aspoň je to pojmenování problému. Jde o to, že v počítači byly nainstalovány ještě jedny Office, tedy ještě jeden Excel (verze 16). Takový ten předinstalovaný software, který tam čeká, až ho jednou budete chtít.
No a ty xlwings si samozřejmě pro otevírání excelových souborů pro sebe zaregistrovaly tu verzi 16. JENŽE. Když jsem měl v danou chvíli spuštěný Excel verze 14, což mám prakticky pořád, když jsem se pokoušel tenhle skript spouštět, tak xlwings použily ten otevřený Excel, uměly do něj zapsat tu hodnotu, ale potom asi chybně volaly tu funkci ( book.api.Expor­tAsFixedFormat(0, pdf_path) ) pro převod do PDF, které zřejmě přeposílaly odkaz na tu novější verzi. A tam vznikala ta chyba, že ta funkce asi používala tu jinou verzi.
Myslel jsem si, že přijdu na to, jak xlwings přesvědčit, aby používaly tu starší verzi Excelu. Hodně pomohl tento odkaz: dokumentace xlwings , ale neměl jsem zatím čas zjistit, jak přesvědčit xlwing, aby pracoval s tou první nebo druhou verzí Excelu.
Tak abych dosáhl rychle výsledku, tak jsem tu zkušební verzi Office odinstaloval, stejně bych jí nikdy v budoucnu nekupoval. Ale určitě je tedy dobré vědět, že v xlwings lze nějak určit, s kterou verzí Excelu při více instancích má pracovat...

 
Nahoru Odpovědět
10.2.2021 19:53
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12.2.2021 11:31

To by mozna bylo dobre nahlasit autorovi programu, knihovny, pripadne microsoftu. Tenhle MS nesmysl s predinstalovanymi office muze zpusobovat celou radu problemu i jinym programum, mozna :)

 
Nahoru Odpovědět
12.2.2021 11:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.