如何在c#中进行后期绑定时指定要创建的工作表数量?

时间:2015-06-23 13:05:46

标签: c# .net late-binding

我需要指定使用后期绑定创建的工作表数量。这是我的代码&异常表示无效索引:

oSheets = oWB.GetType()
    .InvokeMember("Worksheets", BindingFlags.GetProperty, null, oWB, new object[] { 7 });

下面的代码可以工作并创建3个工作表,

oSheets = oWB.GetType()
    .InvokeMember("Worksheets", BindingFlags.GetProperty, null, oWB, null );

让我知道创建具有指定编号的工作表需要做些什么。

1 个答案:

答案 0 :(得分:1)

您获得异常的原因是您正在调用属性并尝试将参数传递给它。 Excel默认创建3个工作表,这就是第二行的工作原理。如果要添加更多工作表,则需要调用Workbook.Worksheets.Add()方法并指定count属性。您可以按照要求继续使用反射,但如果使用dynamic类型,则更容易编写(和回读):

dynamic oWB = GetWorkbook();
dynamic oSheets = oWB.Worksheets();

//We now have 3 worksheets, and now we will add 4 more
oSheets.Add(null, null, 4, xlSheetType.xlWorksheet);

如果需要,枚举:

public enum xlSheetType
{
    xlWorksheet = -4167
}