C#。 microsoft interop excel。

时间:2011-07-28 12:13:46

标签: c# excel interop

我试图将RoomType数组插入excel书中。 RoomType的范围是从D22到D25,所以问题是此代码仅将firts值放在此范围内。如果我将RoomType.set_Value插入到for循环中,则excel范围填充最后一个数组项。有谁可以帮助我?

 Object[,] RoomtypeArray = new object[1, _RoomType.Count];
     for (int i = 0; i < _RoomType.Count; i++)
                {
                    RoomtypeArray[0, i] = _RoomType[i];

                }
 RoomType.set_Value(Type.Missing, RoomtypeArray);

1 个答案:

答案 0 :(得分:2)

这就是你需要的:

//Microsoft.Office.Interop.Excel.Range RoomType;
//List<double> _RoomType;

object[,] roomTypeArray = Array.CreateInstance(
    typeof(object),
    new int[] { 1, _RoomType.Count},
    new int[] { 1, 1 });

for (int i = 0; i < _RoomType.Count; i++)
{
    roomTypeArray[1, i + 1] = _RoomType[i];
}

RoomType.Value2 = roomTypeArray;

因为为范围设置数组需要基于1的索引而不是基于0的索引,这些索引与new中的C#语句一起使用。

(另请参阅How can I quickly up-cast object[,] into double[,]?的接受答案,找到对象[,]和double [,]之间的巧妙技巧,以便在Excel Inerop中使用。