【发布时间】:2011-04-18 15:48:40
【问题描述】:
晚上好!
哪些类型的值可以使用Range.Value2 直接存储到 Excel 工作表中,我如何快速检查特定值是否可以?
假设我有一组对象,可能是多类型的(例如,一个int、一个double 和一个Foo 存储在object[] 中)。
如果我选择宽度为 3 的范围并尝试使用 Range.Value2 存储此数组,这将导致异常(当然 Excel 不知道 Foo 是什么)。
我想出了一个检查数组中每个值的想法,如果它不可存储,则使用ToString() 将其转换为字符串表示形式。但是如何检查它最初是否可存储?
最终做这样的事情会很可怕:
public bool storable<T>(T value)
{
return value is int ||
value is uint ||
value is short ||
value is byte ||
...
value is string;
}
...尤其是知道每个is 都会将变量强制转换为测试类型并严重影响性能。
另一方面,我无法将 each 值预先转换为 string 类型,因为我有时希望能够使用数值而不是字符串来制作图形和图表。
你能告诉我我弄错了还是给我任何解决问题的方法? 谢谢!
【问题讨论】:
-
我无法在 C# 中执行此操作,但为了熟悉 Excel 可以存储的内容,请查看 Excel SDK。他们的关键概念是 XLOPER(或 XLOPER12)
struct,其中包含一个粗糙的union:msdn.microsoft.com/en-us/library/bb687869.aspx。如需更随意的答案,请参阅:stackoverflow.com/questions/1354046/…。如果您正在开发某种加载项,请参阅:exceldna.codeplex.com。
标签: c# .net excel export-to-excel office-interop