Environment
Details
Trying to re-implement example from here using Python.
Everything works fine except this line of code:
slideMasterPart1.AddPart(slideLayoutPart1, "rId1");
There are two definitions of AddPart:
public virtual T AddPart<T>(T part) where T : OpenXmlPart
public virtual T AddPart<T>(T part, string id) where T : OpenXmlPart
slideMasterPart1.AddPart.Overloads output:
T AddPart[T](T)
T AddPart[T](T, System.String)
What works:
slideMasterPart1.AddPart(slideLayoutPart1)
slideMasterPart1.AddPart[SlideLayoutPart](slideLayoutPart1)
What doesn't work:
slideMasterPart1.AddPart(slideLayoutPart1, "rId1")
slideMasterPart1.AddPart(slideLayoutPart1, System.String("rId1"))
slideMasterPart1.AddPart[SlideLayoutPart](slideLayoutPart1, "rId1")
Error:
Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T
The above exception was the direct cause of the following exception:
System.ArgumentException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String) ---> Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T
--- End of inner exception stack trace ---
The above exception was the direct cause of the following exception:
System.AggregateException: One or more errors occurred. (DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String)) ---> System.ArgumentException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String) ---> Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T
--- End of inner exception stack trace ---
--- End of inner exception stack trace ---
---> (Inner Exception #0) System.ArgumentException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String) ---> Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T
--- End of inner exception stack trace ---<---
The above exception was the direct cause of the following exception:
...
slideMasterPart1.AddPart(slideLayoutPart1, "rId1");
TypeError: No method matches given arguments for AddPart: (<class 'DocumentFormat.OpenXml.Packaging.SlideLayoutPart'>, <class 'str'>)
mcve:
import clr
clr.AddReference('DocumentFormat.OpenXml')
from DocumentFormat.OpenXml.Packaging import (
SlideLayoutPart,
SlideMasterPart,
)
slideLayoutPart1: SlideLayoutPart = SlideLayoutPart()
slideMasterPart1: SlideMasterPart = SlideMasterPart()
slideMasterPart1.AddPart(slideLayoutPart1) # this works OK
slideMasterPart1.AddPart(slideLayoutPart1, "rId1") # this raises a runtime exception
So it's only when the second (string) parameter is provided, the first can't be converted. Looks like a pythonnet issue.
Environment
Details
Trying to re-implement example from here using Python.
Everything works fine except this line of code:
There are two definitions of
AddPart:slideMasterPart1.AddPart.Overloadsoutput:What works:
What doesn't work:
Error:
mcve:
So it's only when the second (string) parameter is provided, the first can't be converted. Looks like a pythonnet issue.