C#填充数据到excel.range不工作

我正在使用Microsoft.Office.Interop.Excel将数据写入excel

现在我使用下面的代码来填充数据到一系列单元格。 比方说从P10到P20

  Excel.Worksheet ps_sheet = //current worksheet string[,] data = new string[11,1]; var r = ps_sheet.Range["P10", "P20"]; r.Value2 = data; 

上面的代码工作正常,但如果范围内只有一个单元格(例如“P20”到“P20”)代码将不起作用,单元格显示旧数据。

  Excel.Worksheet ps_sheet = //current worksheet string[,] data = new string[1,1]; var r = ps_sheet.Range["P20", "P20"]; r.Value2 = data; 

excel.range只能有一个单元格,或者有多个单元格,因为我正在做一个循环。

有什么理由为什么发生这种情况,以及如何解决?

只使用一个参数,第二个参数是可选的

  var r = ps_sheet.Range["P20"]; 

Worksheet.Range属性

我改为下面的代码,它的工作原理:

  if (data.GetLength(0) == 1) { r = ps_sheet.Range["P10"]; r.Value2 = data[0, 1]; } else { r = ps_sheet.Range["P10", "P20"]; r.Value2 = data; } 

如果数据只有一行,我特意做了一个例子…不知道是否有更好的方法来实现这一点