【问题标题】:Weird issue with dynamic in Infragistics Ignite Excel libraryInfragistics Ignite Excel 库中的动态奇怪问题
【发布时间】:2013-03-20 18:04:54
【问题描述】:

我正在使用 Ignite UI 工具集来生成 Excel 电子表格。我有一些代码在我的应用程序的旧版本中运行(我从旧的 SVN 代码中提取了源代码),但现在我遇到了一个非常奇怪的问题。

我得到的例外是:

An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' 
occurred in Unknown Module. but was not handled in user code

Additional information: 'object' does not contain a definition for 'Fill'

If there is a handler for this exception, the program may be safely continued.

这是调试器的屏幕截图,显示 cell.CellFormat.Fill(我正在尝试设置并获取异常)正在显示在监视窗口中。请注意,单元格本身是一个动态对象。

有人知道是什么原因造成的吗?也许我只是没有足够地处理动态对象,但在我看来,“填充”确实存在。

【问题讨论】:

  • 这个程序似乎没有使用动态类型。在这种情况下,“var”使用隐式类型,但由于 GetRegion 不返回动态对象,因此“region”变量被声明为实现 IEnumerable 的 WorksheetRegion 实例。因此,当在这种类型上使用 foreach 时,隐式类型化的“单元格”变量应该是 WorksheetCell 类型,但由于某种原因,它被隐式类型化为对象。我不知道为什么,但是您明确键入变量的解决方案应该可以工作。
  • @MikeDour 那么:dynamic {Infragistics.Documents.Excel.WorksheetCell} 作为监视窗口中单元格的类型并不意味着cell 是动态的?
  • 对不起,我一定错过了。我不明白为什么它会是动态的。正如我所说,WorksheetRegion 实现了 IEnumerable.

标签: asp.net-mvc export-to-excel infragistics ignite-ui


【解决方案1】:

Infragistics 回答了我的问题,但如果其他人也遇到问题,请提供解决方案。

解决方案只是将单元格转换为 WorksheetCell 而不是在 foreach 循环中使用 var,所以:

foreach (WorksheetCell cell in region)
{
    cell.CellFormat.Fill = CellFill.CreateSolidFill(System.Drawing.Color.Gray);
    cell.CellFormat.Font.ColorInfo = new WorkbookColorInfo(System.Drawing.Color.White);
}

我不完全确定为什么会修复它,所以我计划在某个时候深入研究它,并可能在我拥有该信息时使用该信息更新此答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2022-01-13
    • 2021-12-01
    相关资源
    最近更新 更多