如何将数组放入excel范围

时间:2011-08-28 20:16:54

标签: c# wpf excel interop

我知道如何将单个单元格写入excel但是当我在数组excel表单上尝试时只填充最后一个值

这是我的范围

 Excel.Range ServiceName = (Excel.Range)_sheet.get_Range(_sheet.Cells[38, "B"] as Excel.Range, _sheet.Cells[45, "B"] as Excel.Range);

_ServiceName是包含1,2,3,4,5,6

的List
for (int i = 0; i < _ServiceName.Count; i++)
            {
                ServiceNameArray[0, i] = _ServiceName[i];

            }

这是我试图写入excel,但正如我所说,excel书中只有最后一项(6)

 for (int i = 0; i < _ServiceName.Count; i++)
            {
                ServiceName.set_Value(Type.Missing, ServiceNameArray[0,i]);
            }

有没有人有想法?

2 个答案:

答案 0 :(得分:1)

我看到你在ServiceName数组上循环以一个接一个地获取所有值但是没有看到你在每次循环迭代时更改cellrange内的聚焦单元格。当然,我会说,你只看到最后一个值,因为你总是在同一个地方将所有值一个写在另一个上。

答案 1 :(得分:1)

Davide Piras是对的。你在那里做了一些其他奇怪的事情,我可以按要求详细说明。

目前我只想指出您可以直接将范围的.Value属性分配给数组

ServiceName.Value2 = _ServiceName.toArray();

对于更大量的数据,这要快得多。

(旁注:如果你想对Formulas做同样的事情,由于一些奇怪的原因,你必须采取额外的步骤(加倍时间):

range.Formula = array;
range.Formula = range.Formula;

除非有更好的方式我不知道yet。)