【问题标题】:c# interop excel: Write 1D array to excel rangec# interop excel:将一维数组写入excel范围
【发布时间】:2019-08-07 14:48:10
【问题描述】:

我想将一维数组复制到 Excel 中的列范围。为此,我使用interop

我已经尝试过这些东西:

  • range.get_Resize(Ary.Length, 1).Value2 = Ary;
  • range.set_Value(Excel.XlRangeValueDataType.xlRangeValueDefault, Ary);
  • range.Value = Ary;一样简单

我什至尝试过使用range.value2,但这些东西会将数组中的第一个索引值复制到整个范围。

假设,如果范围中有 200 行,并且数组包含整数 101-300,那么使用上述尝试的方法,在整个范围内只复制 101。

谁能帮我解决这个问题?如果有人可以向我解释这种奇怪的行为会更有帮助!提前致谢。

注意:我知道我可以通过 for 循环 做到这一点,但这需要时间。我肯定想知道一种方法,它可以用不到一分钟的时间来迭代一百万行。

【问题讨论】:

  • 在我的旧(Visual Basic)代码中,我可以直接设置值。你的'Ary'是什么类型的。
  • 它是一个字符串数组。但问题是,即使使用 int 数组和 object 数组,我也试过了,但没有运气。我不明白为什么它不起作用。
  • 您可以尝试将范围设为“动态”变量吗?还有:当数组太大时,'Value'的集合会抛出异常,我一个一个设置数据。
  • 正如您所建议的,我尝试使用动态变量,但没有成功。仍然是相同的行为。
  • 最新建议:在 Visual Basic 中尝试。是的,我知道,但在 .Net 1.0 的古老和黑暗时代,它在互操作方面是无与伦比的,特别是后期绑定。现在世界变得更美好了。我们已将一个 .vb 项目添加到我们的解决方案中,该项目原本是 C# 中的。

标签: c# arrays excel-interop


【解决方案1】:

我真的不知道上述方法到底有什么问题。但我找到了解决方案:

Excel.Range range = sheetSource.UsedRange.Columns[columnIndx];
range.Value = application.WorksheetFunction.Transpose(Ary);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 2021-10-10
    • 2012-10-26
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2010-10-28
    • 2015-05-22
    相关资源
    最近更新 更多