3

尝试这样做:

let excel = AutomationFactory.CreateObject "Excel.Application"
excel?Visible <- true
excel?workbooks?Add ()

虽然当我运行该代码时 EXCEL.EXE 确实出现在任务管理器中,但该excel对象显然没有属性,这使得其余代码很难执行。(如果我放在let allProps = excel.GetType().GetProperties(BindingFlags.Public ||| BindingFlags.NonPublic)第一行之后,它的计算结果是一个空PropertyInfo数组。)

在我见过的 Silverlight/Excel 互操作示例中,每个人都只是做我想做的事情,没有任何问题。不知道为什么我会遇到这个问题...??

4

1 回答 1

0

AutomationFactory.CreateObject 创建一个自动化服务器,旨在通过动态调度使用。http://msdn.microsoft.com/en-us/library/ff457794(v=vs.95).aspx。对我来说,这是有道理的,因为可用的属性将由正在自动化的对象定义。

使用 object.GetType().GetProperties() 只会为您提供对象的预编译属性,而不是动态属性。

如果您要自动化 excel 来创建电子表格,则使用不使用 Excel 自动化的第三方库可能会更容易。其中许多都列在这个答案中:Create Excel (.XLS and .XLSX) file from C#

于 2013-07-19T14:32:51.923 回答