如何将值的数组分配给Excel单元格,而不会丢失VSTO中的表格格式

这可能是一个容易的,但它目前逃脱我。 我根据一些新的发现重新提出了这个问题。

我在Excel加载项中广泛使用二维数组值,以提高原始速度。

我使用扩展方法来提取单元格数组并对其进行修改,然后将值返回。

例如:

// Get all cells in the worksheet - this is a formatted table including headings Range range = worksheet.UsedRange; // Get all values as a 2D array object[,] cells = range.GetCellArray(); ... // do things to the array // Assign the entire array back to worksheet, but table formatting is erased Range.Value = cells; 

表格格式只能被数组赋值移除。 这就像被删除的命名表ListObject条目一样。

有没有办法保持表格格式?

可能有更好的方法,但我的第一个想法是将数组输出到一个临时表,然后复制输出和select性粘贴 – >值只到您想要的范围。 最后,删除临时表单。

事实certificate,如果您replace标题行的格式化表格中的单元格,则会完全丢失表格。

解决方法是只replace标题下的行。

 // Get all cells in the worksheet - this is a formatted table including headings Range range = worksheet.UsedRange; // Get all values as a 2D array object[,] cells = range.GetCellArray(); ... // do things to the array // Assign the entire array MINUS THE HEADING ROW, back to worksheet cells = cells.SubArray(2, 1, cells.RowCount() - 1, cells.ColumnCount()); EXCEL.Range targetRange = worksheet.GetRange(1, 2, cells.ColumnCount(), cells.RowCount()); targetRange.Value = cells; 

SubArraySubArrayGetRangeColumnCount方法都是我以前创build的所有扩展方法,但是您可以从他们的名称和示例中了解他们做了什么。