C#。 微软interop excel。

我试图插入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); 

这是你需要的:

 //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的索引,这些索引与C#new语句一起使用。

(也请参阅我如何快速将对象[,]转换为 double [,]以便在Excel Inerop中使用object [,]和double [,]之间find一个简洁的技巧)的接受答案。