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

0 投票
1 回答
864 浏览
提问于 2025-04-15 23:19

我正在尝试通过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)

像Font.Color = 0xff0000这样的写法也会出现相同的错误信息。

而这段代码却能正常工作:

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");
        }
    }
}

所以看起来这是一个COM互操作的问题。

1 个回答

0

请查看这里提供的答案:http://www.aspose.com/community/forums/thread/240901/create-a-pivot-table-from-multiple-data-ranges.aspx 我觉得这个方法应该能帮助你解决问题。

撰写回答