2

这可能是一件容易的事,但现在它让我无法理解。我根据一些新发现改写了这个问题。

我在 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被删除的命名表条目。

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

4

2 回答 2

1

事实证明,如果您替换格式化表格的标题行的单元格,您将完全丢失表格。

解决方案是仅替换标题下的行。

// 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;

、和方法都是我之前创建的扩展方法,但是您可以从它们的名称和示例中了解它们的作用SubArrayGetRangeRowCountColumnCount

于 2012-06-04T21:09:07.640 回答
1

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

于 2012-05-31T17:39:17.850 回答