【问题标题】:how to specify number of worksheets to create while doing late binding in c#?如何在 c# 中进行后期绑定时指定要创建的工作表数量?
【发布时间】:2015-06-23 13:05:46
【问题描述】:

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

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

以下代码有效并创建 3 个工作表,

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

让我知道如何创建具有指定编号的工作表。

【问题讨论】:

  • dynamic使用不是更方便吗?例如dynamic oWB = GetWB(); dynamic oSheets = oWB.Worksheets();
  • 我正在使用 VS2005.net 3.0

标签: c# .net late-binding


【解决方案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
}

【讨论】:

  • 我正在使用 VS2005.net 3.0
  • 那时你仍然可以使用反射,但你需要获取第二行的工作表,然后在oSheets 上调用Add 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
相关资源
最近更新 更多