通过.NET COM互操作设置System.Drawing.Color

通过.NET COM互操作设置System.Drawing.Color,.net,python,com,interop,aspose,.net,Python,Com,Interop,Aspose,我正试图通过COM互操作使用Aspose.Words库。有一个关键问题:我无法设置颜色。它应该通过分配给DocumentBuilder.Font.Color来工作,但当我尝试这样做时,会出现OLE错误0x80131509。我的问题很像 更新: 代码示例: from win32com.client import Dispatch Doc = Dispatch("Aspose.Words.Document") Builder = Dispatch("Aspose.Words.DocumentBuil

我正试图通过COM互操作使用Aspose.Words库。有一个关键问题:我无法设置颜色。它应该通过分配给DocumentBuilder.Font.Color来工作,但当我尝试这样做时,会出现OLE错误0x80131509。我的问题很像

更新:

代码示例:

from win32com.client import Dispatch
Doc = Dispatch("Aspose.Words.Document")
Builder = Dispatch("Aspose.Words.DocumentBuilder")
Builder.Document = Doc
print Builder.Font.Size
print Builder.Font.Color
结果:

12.0
Traceback (most recent call last):
  File "aaa.py", line 6, in <module>
    print Builder.Font.Color
  File "D:\Python26\lib\site-packages\win32com\client\dynamic.py", line 501, in __getattr__
    ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
pywintypes.com_error: (-2146233079, 'OLE error 0x80131509', None, None)

看来是COM互操作问题。

请检查此处提供的答案:
我认为,这种方法应该可以帮助您解决问题。

向我们展示一段您正在做的事情的代码,请询问答案。看起来可以使用.NET反射创建像SetColor(object、propertyname、color)这样的通用函数。
using Aspose.Words;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);
            builder.Font.Color = System.Drawing.Color.Blue;
            builder.Write("aaa");
            doc.Save("c:\\1.doc");
        }
    }
}