使用加载项replaceExcel连接范围

我已经写了一个Excel加载项,有点噩梦。 客户工作簿过去是从SQL连接填充,并有负载公式设置命名表等附件我试图填充一些相同的表连接填充(使用现有的页眉和页脚)的数据从WCF服务同时保持格式和公式(即:不要破坏任何东西)。

获取数据很好。 我遇到的问题是这样的:被replace的数据可能比当前存在于指定范围内的数据更多或更less。 我似乎无法find一种方法来删除出现的行,并用我的新数据replace它们,并命名的范围调整到新的数据。

提前谢谢了。

Range range = activeWorksheet.get_Range("Name", MissingValue); range.Clear(); object[,] data = new object[result.Length, 26]; range.get_Resize(result.Length, 26); ... fill data.... range.Value2 = data; 

好的,设法用下面的代码解决它。 也删除了“range.Clear()”调用,它停止格式化被删除。

  Range range = activeWorksheet.get_Range("Name", MissingValue); int totalMissingRows = 0; if (range.Rows.Count < result.Length) { totalMissingRows = result.Length - range.Rows.Count; for (int i = 0, l = totalMissingRows; i < l; i++) { Excel.Range rng = range; rng = (Excel.Range)rng.Cells[rng.Rows.Count, 1]; rng = rng.EntireRow; rng.Insert(Excel.XlInsertShiftDirection.xlShiftDown, MissingValue); } } //delete extra lines //remove left over data for (int i = result.Length, l = range.Rows.Count; i < l; i++) { range.Cells[range.Rows.Count, 1].EntireRow.Delete(null); } 

既然,你已经得到了一个数据的数组,为什么不直接把它写到这个excel呢:
int startRow, startCol;
var startCell = (Range)worksheet.Cells[startRow, startCol];
var endCell = (Range)worksheet.Cells[startRow + result.Length, startCol + 26];
var writeRange = worksheet.get_Range(startCell, endCell);
writeRange.Value2 = data;

在这里,我已经根据你的问题使用了数组的长度,数据是二维数据数组。